https 的握手过程
大约 2 分钟
HTTPS(HTTP over SSL/TLS)握手过程是建立安全连接的关键步骤。下面是详细的握手过程说明:
1. Client Hello
客户端向服务器发送初始消息,包含以下信息:
- 支持的 TLS 版本
- 支持的加密套件列表(cipher suites)
- 客户端随机数(Client Random)
- 会话 ID(如果尝试恢复会话)
2. Server Hello
服务器响应客户端,包含以下信息:
- 选择的 TLS 版本
- 选择的加密套件
- 服务器随机数(Server Random)
- 会话 ID
3. 服务器证书
服务器发送其数字证书,包含:
- 服务器公钥
- 证书颁发机构(CA)信息
- 证书有效期等信息
4. Server Key Exchange(可选)
根据选择的密钥交换算法,服务器可能会发送额外的密钥交换参数。
5. Server Hello Done
服务器通知客户端初始握手消息结束。
6. 客户端验证证书
客户端验证服务器证书的有效性:
- 检查证书是否由受信任的 CA 签发
- 验证证书是否在有效期内
- 验证证书中的域名是否匹配
7. Client Key Exchange
客户端生成预主密钥(Pre-Master Secret)并用服务器公钥加密发送给服务器。
8. 密钥生成
双方使用以下信息生成会话密钥:
- 客户端随机数(Client Random)
- 服务器随机数(Server Random)
- 预主密钥(Pre-Master Secret)
9. Change Cipher Spec
客户端和服务器都发送 Change Cipher Spec 消息,表示后续通信将使用协商的加密参数。
10. Finished
双方发送 Finished 消息,验证握手过程是否成功完成。这些消息使用新协商的密钥和算法加密。
握手完成后
握手完成后,客户端和服务器可以开始安全地传输应用数据,所有数据都将使用协商的对称密钥进行加密和解密。
整个握手过程的主要目的是:
- 验证服务器身份(以及可选的客户端身份)
- 协商加密算法和密钥
- 确保通信的机密性和完整性
这是建立 HTTPS 连接的基础过程,确保了数据传输的安全性。