通过Openssl实现私有CA 并为HTTP服务提供TLS/SLL安全

本文发布时间: 2019-Mar-21
Openssl是SSL的开源实现(可以免费下载应用程序),是一种安全机密程序,主要用于提高远程登录访问的安全性。也是目前加密算法所使用的工具之一,功能很强大。 Openssl为网络通信提供安全及数据完整性的一种安全协议,包括了主要的密码算法、常用的密钥和证书封装管理功能(CA)以及SSL协议,并提供了丰富的应用程序供测试或其它目的使用,例如我们将会使用Openssl实现私有CA,并实现证书颁发。OpenSSL:SSL的开源实现 libcrypto:通用加密库,提供了各种加密函数 libssl:TLS/SSL协议的实现,基于会话的、实现了身份认证、数据机密性和会话完整性的TLS/SSL库 openssl:多用途的命令行工具;能够实现私有证书颁发机构;即在公司内部实现身份的验证; SSL:(Secure Socket Layer)安全套接字层,通过一种机制在互联网上提供密钥传输。其主要目标是保证两个应用间通信数据的保密性和可靠性,可在服务器端和用户端同时支持的一种加密算法。目前主流版本SSLV2、SSLV3(常用)。下面通过此图来了解如何实现SSL功能,在介绍之前,我们来说说SSL提供哪些功能:1、数据的机密性:通过对称加密算法实现数据的机密性。2、数据的完整性:通过单向加密算法保证数据的完整性。3、身份的安全验证:提供数据发送者的身份。解说SSL会话过程:注:前提服务器端在本地通过非对称加密算法生成一对密钥,并将公钥信息发送给CA证书颁发机构,CA给服务器端颁发数字证书,并将证书发送至服务器端。 SSL会话建立过程: 第一步:客户端向服务器端建立连接请求(TCP/IP) 第二步:当TCP/IP建立完成后,客户端和服务器之间协商使用哪种加密算法,如(TSLv1/SSLv2/SSLv3)。 第三步:协商完成后,服务器将公钥发送给客户端,客户端接收公钥信息。 第四步:客户端到CA证书颁发机构下载CA公钥信息,并对服务器端发送的证书做验证。 第五步:随后,客户端在本地通过对称加密算法生成密钥,然后用服务器端发送的公钥进行对这段密钥进行加密,发送至服务器端,其保证了数据的机密性。 第六步:服务器用自己的私钥对这段数据进行解密,得到密钥,然后将客户端的请求数据进行加密发送给客户端。 第七步:客户端接到响应,并用密钥进行机密,得到数据。 第八步:通信结束后,断开会话通道(TCP/IP)那如何通过Openssl构建私有CA呢,在配置之前我们来介绍下关于Openssl的基本使用:OpenSSL:SSL的开源实现 libcrypto:通用加密库,提供了各种加密函数 libssl:TLS/SSL协议的实现,基于会话的、实现了身份认证、数据机密性和会话完整性的TLS/SSL库 openssl:多用途的命令行工具;能够实现私有证书颁发机构;即在公司内部实现身份的验证; openssl: genrsa:通过RSA算法,生成密钥(私钥和公钥) req:申请和生成证书 -new:生成新的证书 -x509:互联网常用的一种标准 -in:证书的位置(签署证书及证书请求常常用到) -out:证书的存放位置 -days:证书的有效期限构建基于Openssl创建私有CA,并完成SSL/TLS机密机制:配置环境:三台虚拟机172.16.88.1/16)CA证书颁发机构并提供HTTP功能--Linux测试端(192.168.0.203/24)--Windows xpSeq1:在CA证书颁发机构,使用Openssl生成一对密钥(私钥和公钥)#cd/etc/pki/CA #(umask077;opensslgenrsa-outprivate/cakey.pem2048)##创建私钥,并将权限改为600 Seq2: 编辑Openssl主配置文件:# vim /etc/pki/tls/openssl.confSeq3:下面就开始为CA自身,签署证书:#opensslreq-new-x509-key-inprivate/cakey.pem-outcacert.pem-days365##生成自签证书Seq4:为CA准备目录及文件#cd/etc/pki/CA #mkdircertscrlnewcerts##相关证书存放目录 #touchindex.txt##相关证书信息 #echo"01">serial##颁发证书的序列Seq5:配置安装HTTP服务及安装mod_ssl模块提供TLS/SSL功能#yuminstallhttpdmod_ssl-y # vim /etc/httpd/httpd.conf #最后一行添加如下内容,并注释DocumentRoot "/var/www/html"行,大约在281行<VirtualHost 172.16.88.1:80>DocumentRoot "/www/example.com"ServerName www.example.com</VirtualHost>#servicehttpdrestart&&chkconfighttpdon#echo"<h1>TestHettpServer</h1>" > /var/www/html/index.html #测试页Seq6:进行简单的测试:nniiijj:ok!!HTTP服务正常工作。Seq7:为HTTP服务器端配置密钥并向CA发送证书颁发请求#mkdir/etc/httpd/ssl #cd/etc/httpd/ssl #(umask077;opensslgenrsa-outhttpd.key1024) #opensslreq-new-key-inhttpd.key-outhttpd.csr-days3650Seq8:CA为HTTP服务颁发数字证书:#cd/etc/httpd/ssl#opensslca-inhttpd.csr-outhttpd.crt-days3650Seq9:查看CA的颁发的证书信息:Seq10:配置SSL的主配置文件(/etc/httpd/conf.d/ssl.conf)#vim/etc/httpd/conf.d/ssl.conf 在81行后面添加如下内容: <VirtualHost172.16.88.1:143> DocumentRoot"/www/example.com"ServerNamewww.example.com 然后在114和121行更改下内容: 114SSLCertificateFile/etc/httpd/ssl/httpd.crt 121SSLCertificateKeyFile/etc/httpd/ssl/httpd.keySeq11:启动httpd服务,并查看相应的143端口是否属于正常打开状态# service httpd restart ##重新读取配置文件Seq12:将CA的公钥信息下载到windows 客户端并重命名为cacert.crt,并安装此证书然后测试。然后使用https://www.example.com是否可以正常访问:


(以上内容不代表本站观点。)
---------------------------------
本网站以及域名有仲裁协议。
本網站以及域名有仲裁協議。

2024-Mar-04 02:08pm
栏目列表