1、客户端向服务器发起HTTPS请求,连接到服务器的443端口
(服务器端有一个密钥对,即公钥和私钥,是用来进行非对称加密使用的,
服务器端保存着私钥,不能将其泄露,公钥可以发送给任何人。)
2、服务器将自己的公钥发送给客户端(公钥放在证书里,发送给客户端)。
3、客户端收到服务器端的证书之后,会对证书进行检查,验证其合法性,如果发现证书有问题,那么HTTPS传输就无法继续。
如果合法,那么客户端会生成一个随机值,这个随机值就是用于进行对称加密的密码,也就是说,客户端还要将数据使用对称加密后再传给服务端。
(这个对称加密的密码是通过客户端通过服务端的公钥,加密后,传给服务端,这样就只有服务端知道对称加密的密码了。因为只有服务端有私钥可以解密。)
至此,第一个HTTPS请求结束。
4、客户端发起第二次HTTPS请求,将对称加密的密码发送给服务器。
5、服务器接收到客户端发来的密文之后,会用自己的私钥对其进行解密,解密之后的明文就是对称加密的密码,然后服务端用该密码对数据进行对称加密,这样数据就变成了密文。
6、然后服务器将加密后的密文发送给客户端。
7、客户端收到服务器发送来的密文,用客户端密码对其进行对称解密,得到服务器发送的数据。
这样第二个HTTPS请求结束,整个HTTPS传输完成。