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