首页/安全/加密与证书速查/SNI 与默认站点不匹配
TLS 与 HTTPS60 条

SNI 与默认站点不匹配

客户端(健康检查、旧库)未发送 SNI 时会命中 nginx 的 default_server,返回与目标域名不符的证书;分别带与不带 -servername 探测并对比证书主体即可定位。

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

名称不匹配怎么定位

客户端在握手时不发送服务名称时,服务端会命中默认站点,返回与目标域名不符的证书。常见来源是健康检查脚本与旧客户端:它们固定访问地址而不带名称。分别带名称与不带名称各探测一次,对比返回证书的主体,即可快速定位。配置上应显式声明默认站点与占位证书,避免行为依赖配置顺序。

基本信息

定位方法同一地址两次探测:带名称与不带,对比主体
风险点探活脚本固定访问地址且不发名称,告警与真实用户不一致
配置建议显式声明默认站点与占位证书
影响证书主体与访问名称不符

典型使用场景

  • 排错:探活告警与用户反馈不一致
  • 接入新域名后出现证书不匹配
  • 多站点共用地址时的行为确认
  • 迁移与扩容后默认站点归属变化
  • 合规检查:确认默认站点使用独立占位证书

对比探测

对比探测
echo | openssl s_client -connect example.com:443 -servername example.com 2>/dev/null | openssl x509 -noout -subject
echo | openssl s_client -connect example.com:443 2>/dev/null | openssl x509 -noout -subject
# 两次主体不一致说明默认站点返回了另一张证书

默认站点声明

默认站点声明
server {
    listen 443 ssl default_server;
    server_name _;
    ssl_certificate     /etc/nginx/ssl/default.crt;
    ssl_certificate_key /etc/nginx/ssl/default.key;
}

现象与原因

现象原因处理
探活报证书不匹配检查未发送名称修正检查配置
部分客户端不匹配客户端不支持该扩展单独规划接入方式
主体随机变化多个服务块都未声明默认显式指定默认站点
健康检查应携带正确的名称,否则证书校验结果与用户侧不一致,会造成告警与实际状态长期偏差。

落地建议

  • 为默认站点配置独立占位证书
  • 探活请求显式携带目标名称
  • 把默认站点归属纳入配置基线
  • 变更后做两次探测对比
多个服务块都未标记默认站点时,命中结果会依赖配置加载顺序,这类行为在扩容或重排配置后可能突然改变。

易错点

  • 多个服务块都未标记默认站点,行为随配置顺序变化
  • 以未携带名称的探测结果判断线上证书状态
  • 默认站点复用业务证书,暴露不属于该地址的站点信息
  • 扩容或重排配置后默认站点变更,未做回归验证
  • 把客户端不支持该扩展与配置错误混为一谈

数据来源与参考

  • RFC 6066 §3(Server Name Indication)
  • nginx 官方文档(listen default_server)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌