https通信过程

下面我们用拟人化的方式说明HTTPS通信的过程。

在通信过程中,

  • 步骤 1

浏览器服务器发起连接请求

  • 步骤 2

服务器浏览器发送自己的数字证书。证书中包含一个公钥用来加密信息,注意这里 私钥由服务器秘密保存

  • 步骤 3

浏览器 收到服务器的证书后,它会去验证这个数字证书到底是不是服务器的,数字证书有没有什么问题

验证方法就是 检查 颁发这个数字证书机构 签名是否正确。 颁发证书的机构会 说明这个网站的信息:包括名称、网址、证书有效期等。 然后 颁发机构会使用 自己的私钥对 这个信息进行 签名。 由于颁发机构的公钥都是 公布于众的, 可以在它的官方网站获取到,浏览器 可以用颁发机构公钥 来验证签名。

验证一致后,浏览器 会发送一个随机的字符串给服务器用私钥去加密,服务器把加密的结果返回给浏览器浏览器 用公钥解密这个返回结果,如果解密结果与之前生成的随机字符串一致,那说明对方确实是私钥的持有者,或者说对方确实是服务器

  • 步骤 4

验证服务器的身份后,浏览器 再生成一个 对称加密算法和密钥,用于后面的通信的加密和解密。

这个对称加密算法和密钥,浏览器 会用公钥加密后发送给服务器,别人截获了也没用,因为只有服务器手中有可以解密的私钥。这样,后面服务器浏览器 就都可以用对称加密算法来加密和解密通信内容了。


大家可以发现 公私钥的加解密 只在连接建立的时候使用一下,用来验证服务端身份 和 加密传输 对称加密算法和密钥。

真正的数据传输会使用对称加密算法和另外的密钥进行。