服务端保存一对公钥与私钥。是用来进行非对称加密使用的。私钥不能将其泄漏,公钥可以传输给任何人。
- 浏览器向服务器发起HTTPS请求,向服务器的443端口链接。服务器将公钥发送给浏览器!
- 浏览器收到公钥后,将验证公钥合法性。如果公钥不合法,将无法发起https传输。换言之,验证https数字证书。
- 证书合法,浏览器生成随机值(client key 客户端密钥 对称加密传输使用)。然后浏览器调用公钥,对client key进行非对称加密-- 第一次http请求结束
- 客户端将加密后的client key 发送给服务器。
- 服务器收到浏览器传输来的加密client key ,会用自己的私钥对其进行非对称解密。解密后的明文就是client key。然后利用client key 对数据进行对称加密。并将加密的数据传输给浏览器。
- 浏览器收到服务器的加密数据。利用client key 对其进行对称解密。得到服务器传输的数据。