利用httpd+OpenSSL来实现网站的https

利用httpd+openssl来实现网站的https


                                        CA验证中心(颁发/吊销证书)
                                        /                \ \ 
                                CA 证书    /            下发  \ \ 证书请求
                                        /            证书  \ \
                                  client <--------数字证书------ WEB

1。web服务器,生成非对称加密密钥对(web公钥,web私钥)
2。web服务器使用 web身份信息+web公钥 生成 web服务器的证书请求 ,并将证书请求发给CA服务器
3。CA服务器使用 CA的私钥 对 web 服务器的证书请求 进行数字签名得到 web服务器的数字证书,并将web服务器的数字证书颁发给web服务器。
4。client访问web服务器,请求https连接,下载web数字证书
5。client下载 CA数字证书(CA身份信息+CA公钥,由上一级CA颁发,也可自签名颁发),验证 web数字证书(CA数字证书中有CA公钥,web数字证书是使用CA私钥签名的)
6。client与web协商对称加密算法,client生成对称加密密钥并使用web公钥加密,发送给web服务器,web服务器使用web私钥解密
7。使用对称加密密钥传输数据,并校验数据的完整性

下面呢我们来讲一下具体步骤

配置CA服务器
========================================================
1.配置CA 172.16.1.2 生成CA自己的公钥 私钥 CA对自己进行证书自签名 (用脚本生成)
[root@CA ~]# vim /etc/pki/tls/openssl.cnf
dir            = /etc/CA                  # Where everything is kept      第45行
basicConstraints=CA:TRUE    # 自签署的证书可以使用  第178行

[root@CA ~]# vim /etc/pki/tls/misc/CA
CATOP=/etc/CA            #第42行

Write out database with 1 new entries
Data Base Updated

 

[root@CA ~]# ls /etc/CA/private/cakey.pem    #CA私钥
[root@CA ~]# ls /etc/CA/cacert.pem        #CA证书
[root@CA ~]# ls /etc/CA/careq.pem        #CA证书请求


配置web服务器
===============================================================
web 生成自己的私钥
[root@www ~]# openssl genrsa -des3 -out /etc/httpd/conf.d/server.key        #使用des3保护私钥
Generating RSA private key, 512 bit long modulus
 .........++++++++++++
......................++++++++++++
e is 65537 (0x10001)
Enter pass phrase for /etc/httpd/conf.d/server.key:123456
Verifying - Enter pass phrase for /etc/httpd/conf.d/server.key:123456

Please enter the following 'extra' attributes to be sent with your certificate request
A challenge password []:
An optional company name []:

CA服务器对证书请求进行数字签名
============================================================================= 
[root@CA ~]# openssl ca -keyfile /etc/CA/private/cakey.pem -cert /etc/CA/cacert.pem -in /tmp/server.csr -out /tmp/server.crt

    /etc/CA/private/cakey.pem    (这是ca的私钥)
  /tmp/server.csr            (httpserver的证书请求文件)
  /etc/CA/cacert.pem          (ca的证书)
  /tmp/server.crt            (生成的httpserver的证书的名字)

1 out of 1 certificate requests certified, commit? [y/n]y
Write out database with 1 new entries
Data Base Updated


配置web支持ssl实现https
==========================================================
[root@www ~]# yum install httpd mod_ssl
[root@www ~]# vim /etc/httpd/conf.d/ssl.conf
SSLCertificateFile /etc/httpd/conf.d/server.crt
SSLCertificateKeyFile /etc/httpd/conf.d/server.key

[root@www ~]# netstat -tunpl | grep 443
tcp 0 0 :::443 :::* LISTEN 2000/httpd

Client下载CA证书并导入到浏览器,然后访问www服务器
==================================================================================
client需要下载CA证书并导入浏览器,使用https访问web,浏览器验证web数字证书是否由CA颁发 打开firefox,编辑------>首选项----->高级----> 加密----->查看证书------>导入

OpenSSL 的详细介绍:请点这里
OpenSSL 的下载地址:请点这里

推荐阅读:

相关推荐