证书链要看什么
服务端在握手中会下发一条证书链,通常包含站点自身的证书与若干中间证书,根证书一般不随链下发而是由客户端本地信任库承担。判读的核心是首尾相接:每一级证书的签发者要与上一级的持有者对应,链条从站点证书一路连到受信任的根。链不完整或顺序错乱时,严格校验的客户端会直接失败,而宽松实现可能靠缓存或自动补链蒙混过关,于是出现「有的客户端能用、有的不能用」。
基本信息
| 适用平台 | Wireshark / tshark,可解析握手明文中的证书 |
|---|---|
| 相关字段 | tls.handshake.certificate 及证书字段 |
| 常见问题 | 缺少中间证书、顺序错乱、包含多余的根证书 |
| 观察方式 | 逐级比对签发者与持有者是否首尾相接 |
典型使用场景
- 部分客户端校验失败而部分正常,确认链是否完整
- 更换证书后做上线前验证,确认中间证书是否随之下发
- 排查自动化客户端报错,确保证书内容与人工访问一致
- 对比不同后端的证书下发差异,定位配置不一致
- 为证书过期或吊销类问题提供报文级确认
- 梳理自建信任链的部署是否正确
观察要点
观察要点
tls.handshake.type == 11 # 证书消息
tls.handshake.certificate # 链中各证书内容
# 逐级检查: 每一级的签发者 = 上一级的持有者,首尾相接即链完整
# 链路末端应连到客户端信任库中的根,根证书通常不下发
# 证书消息已加密的协议版本需要密钥日志才能看到明文逐级观察读法
| 观察项 | 含义 | 异常表现 |
|---|---|---|
| 站点证书域名 | 本证书适用的域名范围 | 与访问域名不符即触发告警 |
| 有效期区间 | 证书可用时间窗 | 超出区间即校验失败 |
| 签发者与持有者 | 链条衔接关系 | 断裂说明链不完整或顺序错 |
| 链长度 | 下发的证书数量 | 过短可能缺中间证书,过长含多余根 |
抓包可解出握手明文中的证书,证书类问题不必依赖去看服务器配置文件,报文里的事实更直接。
在证书消息已加密的协议版本里,没有密钥日志就只能看到消息长度而看不到内容,判读方式要相应调整。