今天笔试的时候遇到的题目,之前只了解url的过程,没想到被这道题难到了,于是搜索总结了一下大致的流程
-
客户端发起https请求,连接到服务端的443端口
-
服务器将自己的公钥发送给客户端———服务端采用的https有一套数字证书,证书的本质是公钥(发给任何人)和私钥(服务端保留)
-
服务器将自己的公钥发送给客户端
-
客户端解析证书,首先验证公钥是否有效,如果有异常,就会弹出警告信息。证书验证通过后生成一个随机值(client key,即客户端密钥),用于对称加密。然后用服务器的公钥(即证书)对客户端密钥进行非对称加密,于是客户端密钥变成密文。至此,HTTPS中的第一次http请求结束。
-
发起第二个https请求,将加密之后的客户端密钥发送给服务器
-
服务器接收到客户端传来的密文之后,会用自身的密钥去进行非对称解密(即客户端密钥)。再使用客户端密钥对数据进行对称加密,数据就变成了密文
-
服务器将对称加密后的密文发给客户端
-
客户端收到密文后,使用客户端密钥进行解密,这样就获得了数据。此时第二次http请求结束,整个https传输完成