原文链接:https://www.cnblogs.com/kidyuan/p/9734055.html

Http协议的缺点

1.通信过程的数据有可能被黑客拦截篡改和窃取。
2.不能保证通信双方的身份,有可能一方是伪装的。

什么是HTTPS协议

HTTP协议是运行在TCP之上的,HTTPS是运行在SSL(安全套阶层)之上再由SSL与TCP协议进行通信,SSL解决了HTTP协议不安全的问题。

SSL如何解决HTTP的问题的

SSL使用了对报文加密的方式来保证数据传输安全的?说到这里要先介绍两种加密方式:对称加密和非对称加密。
对称加密:服务器和客户端持有一个相同的密钥,这个密钥既可以加密又可以解密。比如:A向B发送消息,A用密钥key进行加密,B收到加密的数据之后用同样的密钥key对数据进行解密。

非对称加密:服务器和客户端分别有自己的公钥和私钥,并且双方持有对方的公钥,当一方向另一方发送数据的时候首先使用对方的公钥对数据进行加密,对方收到数据之后用自己的私钥进行解密。比如 A向B发送msg,A首先用B的公钥对msg进行加密,B收到加密的msg之后用自己的私钥进行解密。

对称加密虽然简单但是,安全性低,公钥很可能在传输过程中被窃取,这样就毫无安全性可言了。非对称加密安全性较高但是十分占用计算资源。因此HTTPS使用了对称+非对称加密的方式对数据进行加密。首先用非对称加密的方式传输对称加密所要使用的密钥,之后的数据传输就是用对称加密对数据进行加密,也就是说非对称加密保证的是对称加密密钥的安全,对称加密保证的是传输的数据的安全,这样就既保证了安全性有保证了传输速度。

SSL如何确定通信方另一端的身份的?这里用到了证书机制:
1.服务器首先将自己的公开密钥发送到数字证书认证机构
2.数字证书认证机构使用自己的私钥对服务器的公开密钥进行签名并颁发公钥证书(公钥证书=服务器的公开密钥+数字证书认证机构生成的数字签名)。
3.通信过程中服务器会把这个证书放松给客户端,客户端会拿数字证书认证机构的公钥去数字证书认证机构认证服务器公钥证书上的数字签名是否是真的,如果是真的那么通信方是可信任的。

HTTPS的通信过程

1.客户端向服务端发送客户端支持的SSL版本,加密组件列表。
2.服务端向客户端发送应答报文,该报文是从第一步客户端发送的报文中筛选出来的双方都支持的SSL版本和加密组件。
3.服务端向客户端发送公钥证书(这个公钥是用来加密后面用来加密数据的对称密钥的)。
4.服务端向客户端发送Finish报文,告诉客户端第一次握手结束。
5.客户端向服务端发送Client Key Exchange报文,包含Pre-master
secret 的随机密码(用于加密后面的消息),Pre-master secret已经用前面的公钥加密。
6.客户端向服务端发送Change Cipher Spec,告诉服务器后面使用Pre-master secret进行机密。
7.客户端向服务端发送Finish报文,第二次握手完成。
8.服务器向客户端发送Change Cipher Spec报文,这里客户端和服务端已经协商好用来加密的公钥。
9.服务器发送Finish报文,标志第三次握手结束。到这里SSL建立完成。
10.开始进行HTTP通信。

posted on 2018-10-01 09:08  DeanWInches  阅读(113)  评论(0编辑  收藏  举报