3.1 HTTP 常见面试题 | 小林coding (xiaolincoding.com)
SSL/TLS握手协议
- 客户端向服务端索要并验证服务器的公钥
- 双方协商生产会话密钥
- 双方采用会话密钥进行加密通信
前两步也就是 SSL/TLS 的建立过程,也就是 TLS 握手阶段(TLS四次握手)。
TLS协议建立具体过程:
- 客户端向服务端发起加密通信请求,发送信息包括 TLS协议版本、客户端随机数、密码套件列表
- 服务端收到请求后,返回响应,响应信息包括 TLS协议版本、服务端随机数、密码套件列表、服务器的数字证书
- 客户端收到响应后:
- 通过浏览器或操作系统中的CA公钥,确认服务器数字证书的真实性
- 从证书中取出服务器公钥,加密一个随机数作为pre-master key,并发送给服务端
- 双方拿着客户端随机数+服务端随机数+pre-master key生成本次通信的会话密钥
- 服务端向客户端发送最后的信息,包括:
- 加密通信算法改变通知,随后用会话密钥 加密通信。
- 握手结束通知,把之前的所有内容做个摘要,供客户端校验
TLS握手结束后,双方使用会话密钥对称加密进行通信。
TLS记录协议
TLS 记录协议主要负责消息(HTTP 数据)的压缩,加密及数据的认证