https知识点:
https常用的两个协议
ssl: 使用v3版本
tls: 使用v1版本
SSL会话的简化过程
(1) 客户端发送可供选择的加密方式,并向服务器请求证书
(2) 服务器端发送证书以及选定的加密方式给客户端
(3) 证书验证:
客户端必须先信任给服务器发证书的CA
(a) 验证证书来源的合法性:使用CA的公钥解密证书上数字签名
(b) 验证证书的内容合法性:完整性验证
(c) 检查证书的有效期限
(d) 检查证书是否被吊销
(e) 证书中拥有者的名字,与访问的目标主机要一致
(4)客户端生成临时会话密钥(对称密钥),并使用服务器端的公钥加密此密钥发给服务器,完成密钥交换
(5)服务器用此密钥加密用户请求的资源,响应给客户端
注意: SSL会话是基于IP地址创建的,所以单IP的主机上,仅可以使用一个https虚拟主机(实验结果显示可以配置多个https虚拟主机,待进一步验证)
测试用工具
openssls_client –connect www.test.com:443 –Cafile /etc/pki/CA/cacert.pem
//使用指定的CA证书来测试https站点
检查是否安装ssl模块:
httpd -M | grep ssl
yum install -y mod_ssl //安装ssl模块
准备私有CA:
略。
申请证书:
mkdir /etc/httpd/ssl //创建目录,用于存放私钥和证书
(umask 077;openssl genrsa -out/etc/httpd/ssl/httpd.key 2048) //创建私钥
openssl req -new -key/etc/httpd/ssl/httpd.key -days 365 -out /etc/httpd/ssl/httpd.csr
//创建证书申请
scp /etc/httpd/ssl/httpd.csr root@192.168.1.102:/tmp
//把申请文件发给CA
openssl ca -in /tmp/httpd.csr-out /etc/pki/CA/certs/web1.test.com.crt -days 700
//CA颁发证书
scp root@192.168.1.102:/etc/pki/CA/certs/web1.test.com.crt/etc/httpd/ssl/
//从CA获取证书
配置https站点:
cp/etc/httpd/conf.d/ssl.conf{,.bk} //先备份
service httpd restart //添加了监听端口,需要重启服务
效果:
额外测试:
给web2.test.com也绑定证书
结果:
进一步测试:
再添加一个www.example.com虚拟主机