SSL协议位于TCP/IP协议与各应用层协议之间,为数据通讯提供安全支持。SSL协议可分为两层: SSL记录协议(SSL Record Protocol)、SSL握手协议(SSL Handshake Protocol)
SSL握手协议:在SSL记录协议之上,会话层之下,在实际的数据传输开始前,协商加密算法、交换密钥、身份认证
1. 客户端浏览器发送“hello”信息,表示要和网站建立安全SSL连接
2. 网站服务器响应客户端请求,发给客户端两样东西:网站服务器自己的证书(内含网站的公钥)、一个随机值
3.客户端浏览器验证网站服务器证书是否可信
4.客户端利用网站服务器发的随机值生成会话密钥
5. 客户端浏览器和网站服务器开始协商加密算法和密钥长度
6. 协商成功后,客户端浏览器利用网站的公钥将生成的会话密钥加密,然后传送给网站服务器
7. 网站服务器收到客户端发送的利用网站服务器自己公钥加密的会话密钥,然后用自己的私钥解密出会话密钥,由此得到了安全的会话密钥
8. 网站服务器再随机生成一个信息,用解密后的会话密钥加密该随机信息后后发送给客户端浏览器(目的是让客户端认证服务器)
9. 浏览器收到随机信息后,用会话密钥能解密出信息(自然就认证了服务器),接着浏览器用自己的私钥对此信息做数字签名,连带客户端自己的证书(内含公钥),一起发送给网站服务器(目的是让服务器认证客户端)
SSL记录协议:在SSL握手协议之下,传输层之上,数据传输阶段的封装、压缩、加密(利用SSL握手协议产生的会话密钥对称加密应用层数据)
1.使用ssl访问apache服务器
进入配置文件,创建myssl.conf
[root@localhost ~]# cd /etc/httpd/conf.d
[root@localhost conf.d]# ls
autoindex.conf myhost.conf README userdir.conf
myhost2.conf myssl.conf ssl.conf welcome.conf
[root@localhost conf.d]# vim my ssl.conf
编辑配置文件
<Directory "/www/https">
AllowOverride None
Require all granted
</Directory>
Listen 8002
<VirtualHost 192.168.179.200:8002>
DocumentRoot "/www/https"
ServerName 192.168.179.200
SSLEngine on
SSLProtocol all -SSLv3
SSLCipherSuite HIGH:MEDIUM:!aNULL:!MD5:!SEED:!IDEA
SSLCertificateFile /etc/pki/tls/certs/localhost.crt
SSLCertificateKeyFile /etc/pki/tls/private/localhost.key
</VirtualHost>
编辑This is my https重定向到/www/https/index.html
[root@localhost https]# echo "This is my https" > /www/https/index.html
[root@localhost https]#
重启服务器
[root@localhost https]# systemctl restart httpd
[root@localhost https]#
使用浏览器访问ip https://192.168.179.131:8002
会出现此界面,说明我们的ca证书不够高级,点击高级继续访问
成功访问
2.配置不同端口访问apache服务器
首先在/www/port/下创建两个目录80和8000
在80的index.html编辑the port is 80
在8000的index.html编辑the port is 8000
[root@localhost https]#mkdir -p /www/port/{80,8000}
[root@localhost https]#
[root@localhost ~]# echo the port is 80 > /www/port/80/index.html
[root@localhost ~]# echo the port is 8000 > /www/port/8000/index.html
进入/etc/httpd/conf.d
在myhost.conf中配置,保存后退出
<Directory "/www/port">
AllowOverride None
Require all granted
</Directory>
<VirtualHost 192.168.179.131:80>
DocumentRoot "/www/port/80"
ServerName 192.168.179.131
</VirtualHost>
Listen 8000
<VirtualHost 192.168.179.131:8000>
DocumentRoot "/www/port/8000"
ServerName 192.168.179.131
</VirtualHost>
重启服务
[root@localhost conf.d]# systemctl restart httpd
[root@localhost conf.d]#
访问ip 80端口 和8000端口
访问成功