首页/网络/抓包与流量分析速查/Wireshark 过滤 TLS 握手
Wireshark 技巧75 条

Wireshark 过滤 TLS 握手

tls.handshake.type 按握手消息类型过滤:1 Client Hello、2 Server Hello、11 Certificate、16 Client Key Exchange;定位握手卡点从这里开始。

TLS 握手过滤在做什么

tls.handshake.type 按握手消息类型筛选:1 是客户端问候、2 是服务端问候、11 是证书、16 是客户端密钥交换。排查 HTTPS 连不上或握手失败时,先确认这几类消息是否按顺序出现,就能快速判断卡在哪一步:只有客户端问候说明服务端没有回应,出现致命告警说明协商参数不被接受。需要注意字段前缀在旧版本里是 ssl. 而不是 tls.,且 TLS 1.3 把大部分握手消息放进加密记录,不看密钥日志就只能看到前两条。

基本信息

字段名tls.handshake.type(旧版本为 ssl.handshake.type)
常见取值1 客户端问候、2 服务端问候、11 证书、16 客户端密钥交换
告警消息tls.alert_message 及其级别字段
版本发现tls.handshake.extensions.supported_version
前提仅对能识别为 TLS 的流量生效,非标端口需先指定解码方式

典型使用场景

  • 判断握手卡在哪一步:逐条筛客户端问候与服务端问候
  • 确认证书是否送达:TLS 1.2 下可以直接筛出证书消息
  • 排查协商失败:筛致命告警,看是协议版本还是加密套件不被接受
  • 核对客户端支持的版本与套件:查看客户端问候的扩展字段
  • 确认是否为 TLS 1.3:加密握手消息占比高、可见消息很少

常用示例

常用示例
tls.handshake.type == 1                             # 客户端问候
tls.handshake.type == 2                             # 服务端问候
tls.handshake.type == 11                            # 证书(TLS 1.2 明文可见)
tls.handshake.type == 1 || tls.handshake.type == 2  # 只看握手前两步
tls.alert_message && tls.alert_message.level == 2   # 致命告警
tls.handshake.extensions.supported_version          # 看版本扩展
tls.handshake.type == 1 && ip.dst == 10.0.0.20      # 某服务端的握手请求

握手消息类型对照

取值消息判读要点
1客户端问候列出支持的版本与套件,握手从这里开始
2服务端问候选定版本与套件,缺失说明服务端没有回应
11证书TLS 1.2 明文可见,用于核对证书链
12服务端密钥交换TLS 1.2 下的密钥参数,TLS 1.3 已不可见
16客户端密钥交换客户端提交密钥参数,之后开始加密通信
2 级别告警致命告警协商失败或证书校验不通过时会看到
只有客户端问候而没有服务端问候,是最常见的握手失败形态。此时要区分是服务端没有收到、还是收到后没有回应,两端同时抓包对照是唯一可靠的判断方式。
TLS 1.3 的证书与密钥交换位于加密记录内,看不到属于正常现象,需要客户端导出密钥日志才能解密查看。不要因为看不到证书就判定证书有问题。

与传输层配合

与传输层配合
tls.handshake.type == 1 && tcp.analysis.retransmission   # 握手报文是否被重传
tls.handshake.type == 1 && tcp.stream == 5               # 锁定某条连接的握手
tls.handshake.type == 2 && frame.time_relative < 5       # 前五秒内是否收到服务端问候

判读要点

  • 握手成功但业务失败时,问题多半在证书校验或应用层协议,不再是握手阶段
  • 致命告警里协议版本类错误通常出现在客户端过旧或服务端策略收紧之后
  • 握手耗时明显偏长时先看重传,再核对是否为证书链过大导致分段传输
  • 同一服务端只有部分客户端握手失败,优先怀疑客户端的协议支持范围

易错点

  • 在 TLS 1.3 流量里找证书消息会一直为空,加密握手属于正常现象而非故障
  • 旧版本工具的字段前缀是 ssl.,写 tls. 会提示字段不存在
  • 非标准端口上的流量若未指定解码方式,TLS 字段根本不会出现
  • 只看握手不看传输层重传,会把丢包造成的握手慢误判为服务端处理慢
  • 把致命告警当成唯一结论,实际可能只是其中一个客户端协商参数不匹配

数据来源与参考

  • Wireshark 显示过滤器参考(tls.handshake.type)
  • RFC 8446(TLS 1.3)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌