http协议是以明文方式发送的,不提供任何的加密方式,而https确正好弥补了这种缺陷,https=http+ssl
ssl的作用
客户端与服务端的认证过程
**验证过程**:
客户端请求建立,不可能不请求服务器就直接给响应
然后进行三次握手建立通讯
服务器要想进行加密传输,就必须自己先生成公钥和私钥
然后发送公钥给客户端
客户端验证服务器发过来的公钥是否值得信赖
然后服务端会把自己的信息,公钥发给CA认证,
在CA认证完成之后,会打个标签就是数字签名hash,然后会使用自己的私钥加密,就是三层结构,里层为申请者公钥,中间为数字签名hash,最外层为证书私钥
客户端要想验证服务端公钥合法性,客户端只有向CA机构发起请求,去验证服务器公钥是否合法
**客户端验证过程**,就先要对此证书进行解密验证该证书的合法性,是通过证书的私钥对证书进行解密,
那么客户端如何回拿到该证书的私钥解密呢,是客户端的浏览器内部会有这些密钥信息,就是会直接验证该证书的合法性
对该证书解密之后,就只剩下一个签了名的公钥信息
接下来客户端会验证服务端发来的公钥是否和证书中公钥是一样的呢
客户端通过hash算法对服务端发过来的公钥进行数字签名标签处理
如果服务器发来的公钥和证书中的公钥是相同的,那么通过hash算法生成的数字签名也是一样的
验证完服务端的公钥之后,然后客户端就相信服务端发来的东西是可信的
客户端验证完服务器端后
接下来**服务器端验证客户端**
服务端把公钥发给客户端了,那么服务端如何相信现在的客户端就是刚才和自己建立连接的客户端
客户端会通过信任的公钥发起加密的一个随机的字符串信息到服务端
发过来之后,服务器通过自己的私钥先解密,如果和当时服务端当时生成密钥段预留的那个字符串信息相等,就说明验证成功
数据通讯
验证完成之后,然后进行数据传输,使用对称加密算法
客户端先将请求的信息公钥加密传到服务端
服务端通过私钥解密,将响应信息再通过公钥加密传到客户端
客户端通过私钥解密就收到了响应信息
配置例题
- 配置安全web服务http://www.openlab.com配置SSL加密
要求:生成自签名证书文件为openlab.crt
私钥文件为openlab.key
1、 检查是否安装软件
#rpm -ql mod_ssl
2、 重新挂载
#mount /dev/sr0 /mnt
3.、安装mod_ssl软件,加密软件
#yum install mod_ssl -y
3、 查看yum 状态
#yum repolist
4、 关闭防火墙,防火墙暂不考虑
#systemctl stop firewalld
5、 关闭selinux,暂不考虑
#setenforce 0
6、 编辑配置文件
#cd /etc/httpd/conf.d
#vim -O ssl.conf wahaha.conf 可进行文件间的摘录
7、编辑主页文件
#mkdir /www/8
#echo 西安鸥鹏欢迎您 > /www/8/index.html
8、创建私钥文件密钥文件
#cd /etc/pki/tls/certs
#make openlab.crt
9、查看私钥和密钥文件
#ll 后缀为.crt和.key的文件
10、修改配置文件中私钥文件和密钥文件的路径
#vim /etc/hhtpd/conf.d/wahaha.conf
注意两个文件的路径
11、修改域名和IP对应的文件
#vim /etc/hosts
12、重启服务
#systemctl restart httpd 需写入密钥
13、命令行测试
#curl -k https://www.openlab.com