首页/安全/加密与证书速查/TLS 1.2 完整握手流程
本包目录(305 条)
加密算法基础95 条
TLS 与 HTTPS60 条
证书与 PKI30 条OpenSSL 实战30 条证书运维排查49 条密钥管理41 条

TLS 1.2 完整握手流程

TLS 1.2 完整握手需要 2-RTT:客户端与服务端交换随机数、协商套件、验证证书并用密钥交换算法协商主密钥,最后切换加密并校验 Finished。

加密与证书速查安全更新于 2026-10-12
消息序列ClientHello → ServerHello → Certificate → ServerKeyExchange → ServerHelloDone → ClientKeyExchange → ChangeCipherSpec → Finished
随机数ClientHello.random / ServerHello.random
密钥派生PreMasterSecret → MasterSecret → 会话密钥(PRF)
双向认证服务端请求时增加 CertificateRequest / CertificateVerify

抓包观察握手消息(客户端侧)

抓包观察握手消息(客户端侧)
openssl s_client -connect example.com:443 -msg -state </dev/null 2>&1 | head -60
会话恢复(Session ID/票据)时跳过证书与密钥交换步骤,握手缩短为 1-RTT。

易错点

  • 握手失败时先看服务端是否收到 ClientHello:无响应多与防火墙、端口或中间设备相关
  • 证书链不完整会在客户端验签阶段失败,服务端日志往往无记录,需要客户端侧抓包定位

数据来源与参考

  • RFC 5246 §7.3(握手协议)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌