https通信过程
下面我们用拟人化的方式说明HTTPS通信的过程。
在通信过程中,
- 步骤 1
浏览器
向服务器
发起连接请求
- 步骤 2
服务器
向浏览器
发送自己的数字证书。证书中包含一个公钥用来加密信息,注意这里 私钥由服务器
秘密保存
- 步骤 3
浏览器
收到服务器
的证书后,它会去验证这个数字证书到底是不是服务器
的,数字证书有没有什么问题
验证方法就是 检查 颁发这个数字证书机构 签名是否正确。 颁发证书的机构会 说明这个网站的信息:包括名称、网址、证书有效期等。 然后 颁发机构会使用 自己的私钥对 这个信息进行 签名。 由于颁发机构的公钥都是 公布于众的, 可以在它的官方网站获取到,浏览器
可以用颁发机构公钥 来验证签名。
验证一致后,浏览器
会发送一个随机的字符串给服务器
用私钥去加密,服务器
把加密的结果返回给浏览器
,浏览器
用公钥解密这个返回结果,如果解密结果与之前生成的随机字符串一致,那说明对方确实是私钥的持有者,或者说对方确实是服务器
。
- 步骤 4
验证服务器
的身份后,浏览器
再生成一个 对称加密算法和密钥,用于后面的通信的加密和解密。
这个对称加密算法和密钥,浏览器
会用公钥加密后发送给服务器
,别人截获了也没用,因为只有服务器
手中有可以解密的私钥。这样,后面服务器
和浏览器
就都可以用对称加密算法来加密和解密通信内容了。
大家可以发现 公私钥的加解密 只在连接建立的时候使用一下,用来验证服务端身份 和 加密传输 对称加密算法和密钥。
真正的数据传输会使用对称加密算法和另外的密钥进行。