对于我们的 PCI 合规性,我们开始遇到以下故障:
我们使用 Nginx 作为 Web 服务器。使用我们的任何域名访问 Web 服务器时,我们server_name
在 Nginx 配置中都有正确的值,因此可以提供正确的证书。安全扫描也会直接扫描服务器的 IP 地址,并被其中一个阻止server
。我们如何才能防止这种情况被阻止或以适当的方式做出响应,以免在安全扫描中出现此错误?
我找到了一些想法像这样返回 404,但这无济于事,因为 CN 仍然与 IP 地址不匹配。
这是捕获请求的服务器块的样子(它实际上是从旧域重定向到新域,但正如你所见,它没有明确default_server
列出文档):
server {
listen 443 ssl;
server_name xxxx.de www.xxxx.de;
ssl_protocols TLSv1.1 TLSv1.2;
ssl_certificate /xxxx/ssl-bundle.crt;
ssl_certificate_key /xxxx/xxxx.de.key;
return 301 https://www.yyyy.de;
}
谢谢
答案1
如果您希望非 SNI 客户端默认使用兼容的服务器,则必须添加显式的 default_server。请注意,根据nginx 文档,第一个隐式地用作默认值:
如果没有任何指令具有 default_server 参数,则具有地址:端口对的第一个服务器将成为该对的默认服务器。
有一些半适当的 http 状态代码来表示无法对给定的服务器名称产生响应,但在提供空的(CN 中没有 FQDN)自签名证书后简单地断开连接最有可能确保验证工具忽略该证书:
server {
listen 443 ssl default_server;
server_name _;
ssl_protocols TLSv1.1 TLSv1.2;
ssl_certificate /etc/ssl/snakeoil.crt;
ssl_certificate_key /etc/ssl/private/snakeoil.key;
return 444;
}
答案2
您需要将 IP 地址添加为 http 端口 80 服务器的服务器名称,然后使用
return 301 https://site$request_uri;
例如:
server {
listen 80;
server_name xxxx.de www.xxxx.de 111.112.113.114;
return 301 https://www.yyyy.de$request_uri;
}
编辑:这实际上并没有回答您拒绝连接的问题,而是解决问题,因此它应该将查询正确地重定向到您的网站。