Nginx 为一个域名返回不同的 SSL 证书

Nginx 为一个域名返回不同的 SSL 证书

问题概要:

  • 一个 nginx 服务器
  • 一个具有 SSL 证书的域名
  • 当从一个网络访问该站点时,nginx 返回正确的当前证书(1),而当从其他网络访问时,则返回另一个证书(2),该证书几年前就过期了
  • 服务器缺少旧证书 (2),它不在任何 nginx 配置中

我甚至尝试使用像“grep -r ‘row_from_bad_cert’ /“。为了进行比较,同样成功找到了实际的当前证书(1),但找不到旧证书(2)。

服务器配置 100% 正确。完全排除了此域中可能存在使用证书 (2) 的其他 nginx 配置的问题。

同时nginx访问日志中存在该服务器颁发证书的请求(2)。

除了浏览器之外,我还使用了以下实用程序:

  • openssl s_client-连接领域:443 -prexit-调试
  • nmap -p 443 --脚本 ssl-cert领域

从一个网络,这些命令返回有关当前证书 (1) 的信息,从另一个网络返回有关旧证书 (2) 的信息。

nmap 两次都显示正确的服务器 IP,但证书不同。

该网站绝对不使用集群、循环 DNS 等技术。服务器是唯一的。DNS 通过单个 A 记录指向它。

当然,我重启了服务器和 nginx 几次。证书很久以前就被替换了(旧证书 (2) 是 2021-2022 年的)。

我架设了几十台服务器,第一次遇到这种情况,已经想破脑袋,用尽了所有猜测。

请帮帮我,也许还有其他一些命令可用于调试证书请求,以确保它确实是从正确的服务器请求的,以及 nginx 在请求时提供哪个证书(我的意思是从服务器端)。

抱歉,但由于安全原因,我无法告知实际域名。

答案1

看起来非常混乱。没有配置等很难诊断。我会将您的调试分为几个步骤。

  • 停止 Nginx。从两个网络尝试。如果您的网站仍然响应,则表示您有问题。

  • 暂时删除/注释掉 Nginx 配置以获取正确的证书。用默认的“欢迎使用”替换。尝试从两个网络访问该站点。如果您在使用某些网络时仍然获取旧证书,则说明您在某处引用了一些旧配置,您需要查找它。如果您的旧证书消失,则旧证书仍然以某种方式链接到您的新配置

  • 使用更高级别的调试运行 Nginx。这可能会为你指明正确的方向

相关内容