如何经过Openssl实现私有CA,并为HTTP服务提供TLS/SLL安全机制

http://guodayong.blog.51cto.com/263451/1181059 html

Openssl是SSL的开源实现(能够免费下载应用程序),是一种安全机密程序,主要用于提升远程登陆访问的安全性。也是目前加密算法所使用的工具之一,功能很强大。
       Openssl为网络通讯提供安全及数据完整性的一种安全协议,包括了主要的密码算法、经常使用的密钥和证书封装管理功能(CA)以及SSL协议,并提供了丰富的应用程序供测试或其它目的使用,例如咱们将会使用Openssl实现私有CA,并实现证书颁发。
算法

OpenSSL:SSL的开源实现       libcrypto:通用加密库,提供了各类加密函数       libssl:TLS/SSL协议的实现,基于会话的、实现了身份认证、数据机密性和会话完整性的TLS/SSL库       openssl:多用途的命令行工具;可以实现私有证书颁发机构;即在公司内部实现身份的验证;

      SSL:(Secure Socket Layer)安全套接字层,经过一种机制在互联网上提供密钥传输。其主要目标是保证两个应用间通讯数据的保密性和可靠性,可在服务器端和用户端同时支持的一种加密算法。目前主流版本SSLV二、SSLV3(经常使用)。

下面经过此图来了解如何实现SSL功能,在介绍以前,咱们来讲说SSL提供哪些功能:
vim

一、数据的机密性:经过对称加密算法实现数据的机密性。  二、数据的完整性:经过单向加密算法保证数据的完整性。  三、身份的安全验证:提供数据发送者的身份。

 
解说SSL会话过程:windows

注:前提服务器端在本地经过非对称加密算法生成一对密钥,并将公钥信息发送给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 xp

Seq1:在CA证书颁发机构,使用Openssl生成一对密钥(私钥和公钥)
服务器

# cd /etc/pki/CA  # (umask 077; openssl genrsa -out private/cakey.pem 2048)    ##建立私钥,并将权限改成600

Seq2: 编辑Openssl主配置文件:
# vim /etc/pki/tls/openssl.conf网络

Seq3:下面就开始为CA自身,签署证书:ide

# openssl req -new -x509 -key -in private/cakey.pem -out cacert.pem -days 365      ##生成自签证书

Seq4:为CA准备目录及文件函数

# cd /etc/pki/CA  # mkdir certs  crl  newcerts    ##相关证书存放目录  # touch index.txt         ##相关证书信息  # echo "01" > serial     ##颁发证书的序列

Seq5:配置安装HTTP服务及安装mod_ssl模块提供TLS/SSL功能工具

# yum install httpd mod_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> # service httpd restart  && chkconfig  httpd on # echo "<h1>Test Hettp Server</h1>" > /var/www/html/index.html   #测试页

Seq6:进行简单的测试:

nniiijj:
ok!!HTTP服务正常工做。

Seq7:为HTTP服务器端配置密钥并向CA发送证书颁发请求

# mkdir /etc/httpd/ssl  # cd /etc/httpd/ssl  #(umask 077; openssl genrsa -out httpd.key 1024)  # openssl req -new -key -in httpd.key -out httpd.csr -days 3650



Seq8:CA为HTTP服务颁发数字证书:

# cd /etc/httpd/ssl  # openssl ca -in httpd.csr -out httpd.crt -days 3650

 



Seq9:查看CA的颁发的证书信息:

Seq10:配置SSL的主配置文件(/etc/httpd/conf.d/ssl.conf)

# vim /etc/httpd/conf.d/ssl.conf  在81行后面添加以下内容:  <VirtualHost 172.16.88.1:443>  DocumentRoot "/www/example.com" ServerName www.example.com  而后在114和121行更改下内容:  114 SSLCertificateFile /etc/httpd/ssl/httpd.crt  121 SSLCertificateKeyFile /etc/httpd/ssl/httpd.key

Seq11:启动httpd服务,并查看相应的443端口是否属于正常打开状态
# service httpd restart  ##从新读取配置文件

Seq12:将CA的公钥信息下载到windows 客户端并重命名为cacert.crt,并安装此证书而后测试。

 而后使用https://www.example.com是否能够正常访问:

 

本文出自 “See you next year CA” 博客,请务必保留此出http://guodayong.blog.51cto.com/263451/1181059

相关文章
相关标签/搜索