首页/安全/加密与证书速查/域名不匹配排查

域名不匹配排查

域名不匹配时浏览器报 NET::ERR_CERT_COMMON_NAME_INVALID,openssl verify 报 hostname mismatch(错误码 62)。核对证书 SAN 列表与请求使用的名称,并确认访问路径没有命中错误的默认站点。

加密与证书速查安全更新于 2026-10-13

域名不匹配怎么排查

域名不匹配时浏览器报 NET::ERR_CERT_COMMON_NAME_INVALID,命令行工具会给出 hostname mismatch(校验错误码 62)。原因通常是三类:证书 SAN 里没有访问用的域名、客户端没有发送 SNI 而命中默认站点证书、或者访问路径经过了会改写域名或回源配置的中间设备。

基本信息

校验依据现代客户端只检查 SAN,CN 一般不再参与域名匹配
常见原因证书漏签域名、CDN 回源取错证书、用 IP 直连未发 SNI
离线核对openssl verify -verify_hostname 或 s_client -verify_hostname
通配符规则通配符只匹配一级子域,且不匹配裸域名
相关错误码62(hostname mismatch)、20(链不完整)、10(已过期)
排查顺序先看访问的是哪个域名与 SNI,再核对证书 SAN

典型使用场景

  • 新域名上线:确认证书 SAN 覆盖了全部对外域名
  • 纯 IP 访问:明确此时不会发送 SNI,会命中默认站点
  • CDN 与网关:核对回源配置与边缘节点证书
  • 子域与通配符:确认匹配范围是否符合预期
  • 多域名证书:逐条比对 SAN 列表而不是只看第一个

核对 SAN 与校验结果

核对 SAN 与校验结果
# 抓取线上证书并列出全部域名
openssl s_client -connect example.com:443 -servername example.com </dev/null 2>/dev/null | openssl x509 -noout -subject -ext subjectAltName
# 离线校验指定域名是否匹配
openssl verify -CAfile ca.pem -verify_hostname www.example.com cert.pem
# 用 curl 输出校验结果(0 表示通过)
curl -s -o /dev/null -w 'verify=%{ssl_verify_result}\n' https://www.example.com
# 用 IP 直连对比:不带 SNI 会拿到默认站点证书
openssl s_client -connect 203.0.113.10:443 </dev/null 2>/dev/null | openssl x509 -noout -subject

现象与原因

现象可能原因处置
全部客户端报不匹配证书 SAN 未包含该域名重新签发覆盖所需域名的证书
浏览器正常但 App 报错App 未发送 SNI 或使用 IP 直连改用域名访问或在代码中正确设置 SNI
部分区域用户报错CDN 节点证书未同步或回源取错核对边缘节点与回源证书配置
子域报不匹配通配符不覆盖该层级为该子域单独写入 SAN
换了域名后偶发失败存在缓存或中间层改写 Host检查网关、代理与缓存策略
同一张证书包含多个 SAN 时,任意一个名称匹配即通过。排错时要逐条比对完整列表,尤其是通配符与具体域名的组合;只看第一条容易得出错误结论。
证书校验失败有明确的错误码区分:62 是域名不匹配,20 是链不完整,10 是已过期。先按错误码归类,再决定是补签域名、补中间证书还是续期,能显著缩短排查时间。

易错点

  • 以为 CN 仍参与匹配:现代客户端只检查 SAN,忽略该字段会反复走入死胡同
  • 用 IP 直连排查 HTTPS:不会发送 SNI,拿到默认站点证书后被误判为配置错误
  • 通配符覆盖范围理解错误:通配符不匹配裸域名也不匹配多级子域,需要单独写入 SAN
  • 只在浏览器验证:浏览器可能有缓存或补链能力,无法暴露真实的匹配问题
  • 忽略中间设备改写:网关、代理与 CDN 可能改变回源域名,导致取到不匹配的证书

数据来源与参考

  • RFC 6125(域名标识与通配符匹配)
  • Chromium 项目文档(证书错误说明)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌