首先说下对称加密和非对称加密
对称加密 只有一个密钥,比如叫key 这个key同时扮演加密和解密的角色。
非对称加密 有公钥和私钥 私钥只能一个人持有 私钥加密的密文 公钥都可以解密 公钥加密的密文,只有私钥可以解密。
https握手流程
一、客户端发出请求,明文传输
(1)自己支持的一套加密规则
(2)一个随机数
二、服务端从客户端发来的加密算法中选择一套,将
(1)选出的加密算法
(2)服务器生成的随机数
(3)网站CA证书
发送给客户端
三、客户端本地校验CA证书(通过数字签名)
客户端生成一个随机数密码(pre-master-key),并用CA证书里的公钥加密
客户端根据两个随机数和随机数密码生成协商密钥
生成握手信息,根据协商好的hash计算握手信息,并使用协商密钥和约定好的算法加密
四、客户端将
(1)客户端发送给服务端的通知'参数协商完成1'
(2)加密后的握手信息
(3)CA证书公钥加密后的pre-master-key
发送给服务器
五、服务器用CA证书里的私钥解密出pre-master-key
服务器用pre-master-key和两个随机数生成协商密钥
生成握手信息,根据协商好的hash计算握手信息,并使用协商密钥和约定好的算法加密
六、服务器将
(1)加密后的握手信息
(2)服务器端发送给客户端的通知'参数协商完成2'
发送给客户端
七、客户端拿到握手信息,解密并计算握手消息的hash,并与服务器发来的hash比较,如果一致,握手过程结束。
八、握手成功后,以后的每次通信都会通过协商密钥和约定好的算法进行加密
一句话概述https:
HTTPS要使客户端与服务器端的通信过程得到安全保证,必须使用的对称加密算法,但是协商对称加密算法的过程,需要使用非对称加密算法来保证安全,然而直接使用非对称加密的过程本身也不安全,会有中间人篡改公钥的可能性,所以客户端与服务器不直接使用公钥,而是使用数字证书签发机构颁发的证书来保证非对称加密过程本身的安全。这样通过这些机制协商出一个对称加密算法,就此双方使用该算法进行加密解密。从而解决了客户端与服务器端之间的通信安全问题。
参考:https://www.cnblogs.com/zhangshitong/p/6478721.html