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虚拟主机