1. 客户端向一个需要https访问的网站发起请求。
2. 服务器将证书发送给客户端进行校验。证书里面包含了其公钥。这里要特别说一下客户端到底 如何来校验对方发过来的数字证书是否有效。
3. 校验成功之后,客户端会生成一个随机串然后使用服务器证书的公钥进行加密之后发送给服务器。
4. 服务器通过使用自己的私钥解密得到这个随机值。
5. 服务器从此开始使用这个随机值进行对称加密开始和客户端进行通信。
6. 客户端拿到值用对称加密方式 使用随机值进行解密。
为什么不一直使用非对称进行加密,而是在类似握手之后开始使用对称加密算法进行https通信:
非对称加密的消耗和所需的计算以及时间远比对称加密消耗要大,所以在握手和认证之后,服务器和客户端就开始按照约定的随机串,对后续的数据传输进行加密。