Nginx配置域名证书映射却返回默认SSL证书的原因排查
Nginx返回默认自签名证书的排查原因
cert-mappings.conf未被正确引入主配置
检查Nginx主配置文件(如nginx.conf)是否通过include指令加载了cert-mappings.conf,比如要确保有类似include /etc/nginx/cert-mappings.conf;的配置,路径必须准确,否则Nginx无法读取到证书映射规则。证书映射的域名匹配规则错误
确认cert-mappings中配置的域名与实际请求的域名完全匹配:- 如果是特定域名,要注意是否包含
www.前缀(比如配置了example.com但请求的是www.example.com); - 通配符域名需遵循
*.example.com的格式,且要确保Nginx的server_name匹配逻辑能优先命中该规则,避免被泛域名server块抢先匹配。
- 如果是特定域名,要注意是否包含
未重新加载Nginx配置
修改配置后必须执行nginx -s reload或systemctl reload nginx,否则Nginx会继续使用旧配置,新的证书映射不会生效。证书文件路径或权限问题
- 检查cert-mappings中指定的
ssl_certificate和ssl_certificate_key路径是否正确,路径错误会导致Nginx无法找到证书; - 确保Nginx进程所属用户(通常为
www-data)拥有证书文件的读取权限,权限不足会导致证书加载失败,触发默认证书 fallback。
- 检查cert-mappings中指定的
SNI支持未开启或配置错误
- 旧版本Nginx可能未编译SNI支持,需确认编译时添加了
--with-http_ssl_module模块; - 确保每个server块都正确配置了
server_name,SNI是Nginx根据请求域名匹配对应证书的核心机制,缺失会导致Nginx返回第一个匹配的证书或默认证书。
- 旧版本Nginx可能未编译SNI支持,需确认编译时添加了
默认server块优先级过高
如果存在配置了自签名证书的默认server块(如server_name _;),当请求域名未匹配到任何其他规则时,会优先使用该块的证书。需确保特定域名的证书映射规则优先级高于默认块,或调整默认块的配置。cert-mappings配置语法错误
用nginx -t命令检测配置语法是否正确,语法错误(如漏写分号、括号不匹配、证书与密钥配对错误)会导致Nginx加载配置失败,进而继续使用旧配置或默认证书。
内容的提问来源于stack exchange,提问作者ILYAS_Kerbal
相关产品推荐
相关产品推荐

