一:SSL会话的简化过程
(1) 客户端发送可供选择的加密方式,并向服务器请求证书;
(2) 服务器端发送证书以及选定的加密方式给客户端;
(3) 客户端取得证书并进行证书验正:
如果信任给其发证书的CA:
(a) 验正证书来源的合法性;用CA的公钥解密证书上数字签名;
(b) 验正证书的内容的合法性:完整性验正
(c) 检查证书的有效期限;
(d) 检查证书是否被吊销;
(e) 证书中拥有者的名字,与访问的目标主机要一致;
(4) 客户端生成临时会话密钥(对称密钥),并使用服务器端的公钥加密此数据发送给服务器,完成密钥交换;
(5) 服务用此密钥加密用户请求的资源,响应给客户端;
注意:SSL会话是基于IP地址创建;所以单IP的主机上,仅可以使用一个https虚拟主机
二:配置httpd支持https
(1) 为服务器申请数字证书;
测试:通过私建CA发证书
(a) 创建私有CA
(b) 在服务器创建证书签署请求
(c) CA签证
(2) 配置httpd支持使用ssl,及使用的证书;
# yum -y install mod_ssl
配置文件:/etc/httpd/conf.d/ssl.conf
DocumentRoot
ServerName
SSLCertificateFile
SSLCertificateKeyFile
(3) 测试基于https访问相应的主机;
# openssl s_client [-connect host:port] [-cert filename] [-CApath directory] [-CAfile filename]
三: 实验过程:
(1)创建CA证书
#(umask 077;openssl genrsa -out /etc/pki/CA/private/cakey.pem 2048)
#touch /etc/pki/CA/index.txt
#echo 01 >/etc/pki/CA/serial
#openssl req -new -x509 -key /etc/pki/CA/private/cakey.pem -out cacert.pem -days 7300
//切换到httpd服务主机
#mkdir /etc/httpd/certs
#(umask 077;openssl genrsa -out /etc/httpd/ssl/httpd.key 2048)
#openssl req -new -x509 -key -out /etc/httpd/ssl/httpd.csr
//证书文件发送到CA主机
#scp /etc/httpd/ssl/httpd.csr root@199.100.77.132:/tmp
#openssl ca -in /tmp/httpd.csr -out /etc/pki/CA/certs/www.zenghui.wang.crt -days 365
#scp /etc/pki/CA/certs/www.zenghui.wang.crt 199.100.77.135:/etc/httpd/certs
针对Apache httpd软件默认配置中:
httpd软件默认没有使用ssl模块,需要安装相应的模块程序包
[root@www certs]# yum install mod_ssl -y
[root@www ~]# rpm -qa mod_ssl
mod_ssl-2.2.15-39.el6.centos.x86_64
安装之后会在/etc/httpd/conf.d/目录下生成ssl.conf的配置文件,我们配置https就在此文件中配置:
配置ssl.conf文件,重要配置都在下面文件中了:
[root@www conf.d]#vim /etc/httpd/conf.d/ssl.conf
LoadModule ssl_module modules/mod_ssl.so
Listen 443
<VirtualHost 172.16.31.31:443>
DocumentRoot"/web/vhosts/www2"
ServerName www2.stu31.com:443
SSLEngineon
SSLCertificateFile /etc/httpd/certs/httpd.crt
SSLCertificateKeyFile /etc/httpd/certs/httpd.key
</VirtualHost>
测试文件语法:
[root@www conf.d]# httpd -t
Syntax OK
重启httpd服务
[root@www conf.d]# service httpd restart
Stopping httpd: [ OK ]
Starting httpd: [ OK ]
查看服务监听端口:
[root@www conf.d]# ss -tunl |grep 443
tcp LISTEN 0 128 :::443 :::*
到windows端进行测试:
先将CA服务器的证书安装进windows中;将cacert.pem发送到windows中,改名cacert.crt,安装证书:
转载于:https://blog.51cto.com/wangzenghui/1696463