乐趣区

为什么https要使用证书

最近看了一本关于网络的书,叫做《图解 http》,觉得这本书写的很好,看完之后印象比较深的是这本书的 https 的解释,为此在此总结一下自己的理解。文中的很多截图出自 http 图解,在此表示感谢。

什么是 https

https 不是一种新的协议,只是 http 的通信接口部分使用了 ssl 和 tsl 协议替代,加入了加密、证书、完整性保护的功能,下面解释一下加密和证书,如下图所示

加密:

共享密钥加密

加密和解密公用一套秘钥,这样就会产生问题,已共享秘钥加密方式必须将秘钥传送给对方,但如果通信被监听,那么秘钥可能会被泄漏产生危险。

公开秘钥加密

公开秘钥加密使用一种非对称加密的算法,使用一对非对称的秘钥,一把叫做共有秘钥,一把叫做私有秘钥,在加密的时候,通信的一方使用共有秘钥进行加密,通信的另一方使用私有秘钥进行解密,利用这种方式不需要发送私有秘钥,也就不存在泄漏的风险了。

https 加密方式

因为公开秘钥加密的方式比共享秘钥加密的方式钥消耗 cpu 资源,https 采取了混合加密的方式,来结合两者的优点。

在秘钥交换阶段使用公开加密的方式,之后建立连接后使用共享秘钥加密方式进行加密,如下图。

为什么要使用证书:

因为公开加密还存在一些问题就是无法证明公开秘钥的正确性,为了解决这个问题,https 采取了有数字证实认证机构和其相关机构颁发的公开秘钥证书,通信过程如下图所示。

解释一下上图的步骤:
1. 服务器将自己的公开秘钥传到数字证书认证机构
2. 数字证书认证机构使用自己的秘钥来对传来的服务器公钥进行加密,,并颁发数字证书
3. 服务器将传回的公钥证书发送给客户端,客户端使用数字机构颁发的公开秘钥来验证证书的有效性,以及公开秘钥的真实性
4. 客户端使用服务器的公开秘钥进行消息加密,后发送给服务器。
5. 服务器使用私有秘钥进行解密。

浏览器在安装的时候会内置可信的数字证书机构的共有秘钥,如下图所示。

这就是为什么我们使用自己生成的证书的时候会产生安全警告的原因。

再附一张 https 的具体通信步骤和图解。

最后用了人家这么多图给个购买链接吧图解 http

退出移动版