向 IP 地址发出 cURL 请求时出现 SSL 证书错误

向 IP 地址发出 cURL 请求时出现 SSL 证书错误

我正在尝试向 IP 地址为 xxxx 的服务器发送 cURL 请求。它是健康监测系统的一部分。在服务器上,我在端口 80 和 443 上为 subdomain.example.com 配置了虚拟主机。对于 SSL 证书,我使用的是 *.example.com 通配符证书,我在此服务器以及其他几台服务器上都使用了该证书。

当我尝试 curl 时,http://x.x.x.x它会得到适当的响应。但是当我 curl 时,https://x.x.x.x会出现以下证书错误:

curl:(51)SSL:证书主题名称“*.example.com”与目标主机名“xxxx”不匹配

我知道这是因为证书特定于域名,而我正尝试使用 IP 地址发送请求。但正如我所说,这是我的一个限制(rackspace 负载平衡器健康监控)。

有没有什么办法?

答案1

我将把这个作为一个新的答案,因为它的方向完全不同。事实上,它并没有回答提出的问题,但也许是原帖作者应该关注的方向。

使用负载均衡器时的通常配置是 SSL 证书根本不存在于 Web 服务器上,而是将 SSL 交给负载均衡器。

最终用户向负载均衡器发出 HTTPS 请求。负载均衡器解开 SSL,并通过未加密的 HTTP 将请求转发到 Web 服务器,并带有一个标头,告知 Web 服务器原始请求已加密。(这对于在响应中嵌入 URL 以及避免通过 http 提供安全内容很重要)。

答案2

您可以照常使用域名,但覆盖解析器,如下所示:

curl -v --resolve subdomain.example.com:443:x.x.x.x https://subdomain.example.com/

不过,维护大量这样的映射可能会很麻烦。您可能更愿意忽略证书不匹配:

curl --insecure https://subdomain.example.com/

如果你愿意,你可以使用--insecure --verbose并解析消息来检查证书是否适用于预期的域,但这可能比使用--resolve

相关内容