https:http over ssl


SSL会话的简化过程

(1) 客户端发送可供选择的加密方式,并向服务器请求证书
(2) 服务器端发送证书以及选定的加密方式给客户端
(3) 客户端取得证书并进行证书验证如果信任给其发证书的CA

(a) 验证证书来源的合法性;用CA的公钥解密证书上数字签名
(b) 验证证书的内容的合法性:完整性验证
(c) 检查证书的有效期限
(d) 检查证书是否被吊销
(e) 证书中拥有者的名字,与访问的目标主机要一致

(4) 客户端生成临时会话密钥(对称密钥),并使用服务器端的公钥加密此数据发送给服务器,完成密钥交换
(5) 服务用此密钥加密用户请求的资源,响应给客户端


注意:SSL是基于IP地址实现,单IP的主机仅可以使用一个https虚拟主机

https实现

(1) 为服务器申请数字证书

可参考我的CA博客https://blog.51cto.com/9019400/2381314

  • CA服务器端
CA和证书颁发
mkdir /data/ssl/ -pv
cd /data/ssl/
( umask 066;openssl genrsa 2048 > cakey.pem )
openssl req -new -x509 -key cakey.pem -out cacert.pem -days 3650
openssl req -newkey rsa:1024 -nodes -keyout httpd.key  > httpd.csr 
openssl x509 -req -in httpd.csr -CA cacert.pem -CAkey cakey.pem -set_serial 01 > httpd.crt
scp -r /data/ssl 192.168.64.150:/etc/httpd/conf.d
  • HTTP端

实现HTTPS加密通讯_第1张图片
httpd服务器配置

yum install mod_ssl #HTTPS依赖此模块

vim /etc/httpd/conf.d/ssl.conf

DocumentRoot "/data/site1/"
ServerName www.a.com:443

require all granted

SSLCertificateFile /etc/httpd/conf.d/ssl/httpd.crt
SSLCertificateKeyFile /etc/httpd/conf.d/ssl/httpd.key
SSLCACertificateFile /etc/httpd/conf.d/ssl/cacert.pem  
#SSLCertificateFile /etc/pki/tls/certs/localhost.crt
#SSLCertificateKeyFile /etc/pki/tls/private/localhost.key  #需注释掉

现已实现HTTPS,但浏览器访问还会这样

实现HTTPS加密通讯_第2张图片

所以需要我们手动将根证书导入到电脑

sz /etc/httpd/conf.d/ssl/cacert.pem 
  • 将cacert.pem 重命名cacert.crt

实现HTTPS加密通讯_第3张图片
实现HTTPS加密通讯_第4张图片
实现HTTPS加密通讯_第5张图片
实现HTTPS加密通讯_第6张图片

Ps:在chrome不行,但在360急速浏览器可以,尚不知什么原因