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