域名不匹配是怎么回事
域名不匹配指客户端请求的域名不在服务端证书声明的适用范围里,校验收不到对应条目就判定失败并中断连接。当代客户端以证书里的域名列表为准,较早的通用名称字段已经弱化。排查时按固定顺序核对三项:握手阶段客户端指定的域名、证书声明覆盖的域名范围、应用层声明的目标域名,任何一项对不上都可能被严格客户端拒绝。通配符只覆盖一级子域,这是最常见的踩坑点。
基本信息
| 适用平台 | Wireshark / tshark,握手明文中的域名与证书字段 |
|---|---|
| 相关字段 | 握手中的目标域名、证书的域名列表 |
| 通配符规则 | 只匹配一级子域,多层子域不在覆盖范围内 |
| 地址直连 | 需要证书中包含地址类型的条目,普通域名条目不适用 |
典型使用场景
- 部分客户端报证书告警而部分正常,确认域名字段的差异
- 新域名上线后未更新证书,快速定位覆盖范围问题
- 地址直连测试失败,确认证书是否包含地址类型条目
- 排查通配符证书对多级子域的覆盖是否符合预期
- 为网关与源站证书配置不一致提供报文级证据
- 上线前对多域名做统一核查,避免逐个踩坑
核对顺序
核对顺序
1) 握手中客户端指定的域名 = 实际请求域名?
2) 证书域名列表是否覆盖该域名(含通配符覆盖范围)?
3) 应用层声明的目标域名与握手域名是否一致?
# 任一不符都可能被严格客户端拒绝
tls.handshake.certificate # 查看证书声明的域名范围观察项逐项读法
| 观察项 | 含义 | 异常表现 |
|---|---|---|
| 握手目标域名 | 客户端要访问的站点 | 与实际域名不符会导致命中错误站点 |
| 证书域名列表 | 证书覆盖范围 | 不含请求域名即校验失败 |
| 通配符覆盖 | 以星号代替的一级名称 | 多级子域不在覆盖范围内 |
| 地址类型条目 | 针对地址直连的声明 | 缺失时地址直连校验必然失败 |
通配符只覆盖一级子域,写成单星号加主域名时,再多一层子域就不会被覆盖,这是证书申请和排查时最容易出错的地方。
部分客户端仍会回退校验通用名称字段,遇到不一致案例时按客户端类型分别核对,避免用单一经验覆盖全部情况。