名称不匹配怎么定位
客户端在握手时不发送服务名称时,服务端会命中默认站点,返回与目标域名不符的证书。常见来源是健康检查脚本与旧客户端:它们固定访问地址而不带名称。分别带名称与不带名称各探测一次,对比返回证书的主体,即可快速定位。配置上应显式声明默认站点与占位证书,避免行为依赖配置顺序。
基本信息
| 定位方法 | 同一地址两次探测:带名称与不带,对比主体 |
|---|---|
| 风险点 | 探活脚本固定访问地址且不发名称,告警与真实用户不一致 |
| 配置建议 | 显式声明默认站点与占位证书 |
| 影响 | 证书主体与访问名称不符 |
典型使用场景
- 排错:探活告警与用户反馈不一致
- 接入新域名后出现证书不匹配
- 多站点共用地址时的行为确认
- 迁移与扩容后默认站点归属变化
- 合规检查:确认默认站点使用独立占位证书
对比探测
对比探测
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;
}现象与原因
| 现象 | 原因 | 处理 |
|---|---|---|
| 探活报证书不匹配 | 检查未发送名称 | 修正检查配置 |
| 部分客户端不匹配 | 客户端不支持该扩展 | 单独规划接入方式 |
| 主体随机变化 | 多个服务块都未声明默认 | 显式指定默认站点 |
健康检查应携带正确的名称,否则证书校验结果与用户侧不一致,会造成告警与实际状态长期偏差。
落地建议
- 为默认站点配置独立占位证书
- 探活请求显式携带目标名称
- 把默认站点归属纳入配置基线
- 变更后做两次探测对比
多个服务块都未标记默认站点时,命中结果会依赖配置加载顺序,这类行为在扩容或重排配置后可能突然改变。