首页/网络/协议速查/ClientHello 报文要点

ClientHello 报文要点

握手第一条消息:声明支持的版本、随机数、密码套件与扩展(SNI/ALPN/key_share 等),是抓包与兼容性排查的重点。

协议速查网络更新于 2026-10-13

ClientHello 是什么

ClientHello 是 TLS 握手的第一条消息,客户端在里面声明自己支持的版本、密码套件与各项扩展(SNI、ALPN、supported_versions、key_share 等)。服务器据此决定用哪个版本、哪套算法、出示哪张证书。排查 TLS 兼容性问题、抓包分析 HTTPS 流量时,这条消息是必看的起点。

基本信息

位置TLS 握手第一条消息,明文发送
关键字段legacy_version、random、session_id、cipher_suites、compression、extensions
关键扩展server_name(SNI)、ALPN、supported_versions、key_share、signature_algorithms
规范RFC 8446 §4.1.2、RFC 6066(SNI)
观测手段openssl s_client -msg、Wireshark 过滤 tls.handshake.type == 1
常见问题套件无交集导致 handshake_failure

典型使用场景

  • 排查握手失败:确认客户端实际发了哪些版本与套件,与服务端能力比对
  • 确认浏览器协商到的协议版本,解释「为什么还在用 TLS 1.2」
  • 验证 ALPN 是否携带 h2,判断 HTTP/2 能不能启用
  • 分析链路设备是否改写了 ClientHello(部分设备会干预 SNI 或套件)
  • 写兼容性测试用例:模拟老客户端的最低能力边界

查看 ClientHello 内容

查看 ClientHello 内容
# -msg 打印握手消息摘要,-tlsextdebug 显示扩展细节
openssl s_client -connect example.com:443 -tlsextdebug -msg </dev/null 2>&1 | head -40
# 只关心协商结果时
openssl s_client -connect example.com:443 -alpn h2 </dev/null 2>/dev/null | grep -i -E 'protocol|alpn|cipher'
# 指定最高版本做兼容性测试
openssl s_client -connect example.com:443 -tls1_2 </dev/null 2>/dev/null | head -3
# Wireshark 中过滤
# tls.handshake.type == 1

字段与排障关注点

字段或扩展内容排障关注点
legacy_version固定填 TLS 1.2 值(0x0303)真正的版本要看 supported_versions,别看这个
random32 字节随机数参与密钥派生,也是 TLS 1.3 降级检测依据
cipher_suites客户端支持的套件列表与服务端无交集时报 handshake_failure
server_name目标域名(SNI)决定服务器出示哪张证书
ALPNh2、http/1.1 等决定是否启用 HTTP/2
supported_versions1.3、1.2 等版本列表版本协商的真正依据
key_share客户端预生成的密钥交换公钥TLS 1.3 省一轮往返的关键
看 ClientHello 判断版本时,不要被 legacy_version 误导:TLS 1.3 出于中间设备兼容考虑,这里仍然填 1.2 的值,必须读 supported_versions 扩展才能确认协商结果。
套件列表长度也很说明问题:出现 RC4、3DES、NULL 之类的老套件,说明客户端版本很旧;反过来客户端只给三五个现代套件时,服务端的老配置会直接无法握手。

易错点

  • 靠 legacy_version 判断协议版本,看到 0x0303 就以为在用 TLS 1.2,实际可能是 1.3
  • 只测浏览器不测老客户端与脚本:套件与版本边界不同,上线后才发现兼容性缺口
  • 忽略中间设备的干预:部分安全设备会改写 ClientHello(降级套件、剥离 SNI),排查时要以抓包为准而不是以配置文件为准
  • 抓包只看 ClientHello 不看 ServerHello,无法判断失败原因到底是套件无交集还是证书问题

数据来源与参考

  • RFC 8446 §4.1.2
  • RFC 6066(SNI 扩展)

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌