https
一、SSL会话的简化过程
1、第一次访问一个加密站点时,客户端发送可供选择的加密方式,并向服务器请求证书,服务器端并不会立即响应
2、服务器端发送证书以及选定的加密方式给客户端
(由于A站点的证书包含了由CA私钥签名后的公钥、CA 的信息、过期的时间,这一步,相当于客户端得到了A站点的公钥)
3、客户端取得证书并进行证书验证
如果信任给其发证书的CA
(a) 验证证书来源的合法性;用CA的公钥解密证书上数字签名
(b) 验证证书的内容的合法性:完整性验证
© 检查证书的有效期限
(d) 检查证书是否被吊销
(e) 证书中拥有者的名字,与访问的目标主机要一致
然后, 客户端生成临时会话密钥(对称密钥),并使用服务器端的公钥加密此数据发送给服务器, 完成密钥交换
4、服务用此密钥加密用户请求的资源,响应给客户端
5、 下次通信,仍然使用
注意:SSL是基于IP地址实现,单IP的主机仅可以使用一个https虚拟主机
二、httpd 实现https的方法
过程:
2.1 为服务器申请数字证书
-
创建私有CA
-
在服务器创建证书签署请求
-
CA签证
2.2 配置httpd支持使用ssl,及使用的证书
yum -y install mod_ssl
配置文件:/etc/httpd/conf.d/ssl.conf
-
DocumentRoot
-
ServerName
-
SSLCertificateFile
-
SSLCertificateKeyFile
例子:
-
创建相关证书
openssl genrsa 2048 > cakey.pem openssl req -new -x509 -key cakey.pem -out cacert.pem -days 3650 openssl req -newkey rsa:1024 -days 365 -nodes -keyout httpd.key > httpd.csr openssl x509 -req -in httpd.csr -CA cacert.pem -CAkey cakey.pem -set_serial 01 > httpd.crt
注意:httpd.csr 中最后 Common Name 中common name 一定要是准备加密访问的网站
Common Name (eg, your name or your server’s hostname) [ ]:www.a.com
-
安装ssl 模块
yum -y install mod_ssl
-
修改conf
[root@node1 ~]# vim /etc/httpd/conf.d/ssl.conf
ssl.conf 是来自与安装ssl 模块时生成的配置文件
<VirtualHost _default_:443> DocumentRoot "/data/asite" <directory /data/asite> require all granted </directory> SSLCertificateFile /data/dd/httpd.crt SSLCertificateKeyFile /data/dd/httpd.key SSLCACertificateFile /data/dd/cacert.pem </VirtualHost>