最近看了一本关于网络的书,叫作《图解http》,以为这本书写的很好,看完以后印象比较深的是这本书的https的解释,为此在此总结一下本身的理解。文中的不少截图出自http图解,在此表示感谢。算法
https不是一种新的协议,只是http的通讯接口部分使用了ssl和tsl协议替代,加入了加密、证书、完整性保护的功能,下面解释一下加密和证书,以下图所示浏览器
加密和解密公用一套秘钥,这样就会产生问题,已共享秘钥加密方式必须将秘钥传送给对方,但若是通讯被监听,那么秘钥可能会被泄漏产生危险。安全
公开秘钥加密使用一种非对称加密的算法,使用一对非对称的秘钥,一把叫作共有秘钥,一把叫作私有秘钥,在加密的时候,通讯的一方使用共有秘钥进行加密,通讯的另外一方使用私有秘钥进行解密,利用这种方式不须要发送私有秘钥,也就不存在泄漏的风险了。服务器
由于公开秘钥加密的方式比共享秘钥加密的方式钥消耗cpu资源,https采起了混合加密的方式,来结合二者的优势。网络
在秘钥交换阶段使用公开加密的方式,以后创建链接后使用共享秘钥加密方式进行加密,以下图。加密
由于公开加密还存在一些问题就是没法证实公开秘钥的正确性,为了解决这个问题,https采起了有数字证明认证机构和其相关机构颁发的公开秘钥证书,通讯过程以下图所示。spa
解释一下上图的步骤:
1.服务器将本身的公开秘钥传到数字证书认证机构
2.数字证书认证机构使用本身的秘钥来对传来的服务器公钥进行加密,,并颁发数字证书
3.服务器将传回的公钥证书发送给客户端,客户端使用数字机构颁发的公开秘钥来验证证书的有效性,以及公开秘钥的真实性
4.客户端使用服务器的公开秘钥进行消息加密,后发送给服务器。
5.服务器使用私有秘钥进行解密。接口
浏览器在安装的时候会内置可信的数字证书机构的共有秘钥,以下图所示。ip
这就是为何咱们使用本身生成的证书的时候会产生安全警告的缘由。ssl
再附一张https的具体通讯步骤和图解。
最后用了人家这么多图给个购买连接吧图解http