应用层报文判读71 条

TLS 告警码速查表

常见码点集中记忆:10 意外消息、40 握手失败、42 坏证书、43 不支持证书、70 协议版本、112 未识别名称(SNI)、113 缓冲不足。

告警码是干什么的

TLS 告警是协议层显式给出的失败原因,比「连接被重置」这种表象精确得多。常见码点集中在握手阶段:10 意外消息、40 握手失败、42 证书无效、43 不支持的证书、70 协议版本不被接受、112 未识别名称(SNI 无对应站点)、113 缓冲不足。抓包中它们以 tls.alert_message.desc 暴露,按码点过滤就能把「版本问题」与「证书问题」迅速分开。

基本信息

适用平台Wireshark / tshark,可解析 TLS 1.2 与 1.3 明文告警
字段tls.alert_message.desc(告警描述)、tls.alert_message.level
常见码点10、40、42、43、70、112、113
前提到达告警的报文必须被采集到,且未被中间设备改写成连接重置

典型使用场景

  • 客户端报证书错误时确认服务端是否真的发了证书告警
  • 确认失败是协议版本不匹配还是站点配置缺失
  • 在负载均衡后面定位具体是哪台后端发出的告警
  • 对比不同客户端行为,判断某些客户端是否强制过低版本
  • 为上线前的兼容性测试提供可复核的失败码点记录
  • 排查 SNI 未打通导致的默认站点或拒绝访问

过滤

过滤
tls.alert_message                               # 所有告警
tls.alert_message.desc == 40                     # 握手失败(无共同参数)
tls.alert_message.desc == 42                     # 证书无效
tls.alert_message.desc == 70                     # 协议版本不被接受
tls.alert_message.desc == 112 || tls.alert_message.desc == 113

码点对照读法

码点名称典型场景
10unexpected_message握手顺序与预期不符,常见于中间设备改写报文
40handshake_failure双方无共同版本或套件,需核对两端配置
42bad_certificate证书无效或校验失败,检查链与有效期
43unsupported_certificate证书类型不被接受,多为算法或格式问题
70protocol_version一端禁用了对端要求的最低版本
112unrecognized_nameSNI 指向的站点未在该服务上配置
113bad_record_mac记录层校验失败,常与解密无关的链路损坏有关
告警只是结论,方向仍需展开:同一个 40 既可能来自版本列表无交集,也可能来自套件策略过严,回到 ClientHello 与 ServerHello 的协商字段才能确认。
TLS 1.3 中握手后的告警属于加密记录,没有密钥日志时只能看到记录层长度与方向,看不到具体码点。

易错点

  • 不同 TLS 版本下的码点全集不同:跨版本照搬对照表会得出错误结论
  • 把警告级别当成唯一依据:多数实现对警告类告警同样按致命处理,行为仍会中断
  • 看到 112 就改客户端:该码点通常意味着服务端缺少对应站点的 SNI 配置
  • 只统计告警条数不看方向:客户端发出与服务端发出的告警指向完全不同的责任侧

数据来源与参考

  • RFC 8446(Alert 描述)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌