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

Ank*_*kar 4 ssl-certificate rackspace rackspace-cloud

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

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

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

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

有解决办法吗??

mc0*_*c0e 10

您可以像往常一样使用域名,但像这样覆盖解析器:

curl -v --resolve subdomain.example.com:443:x.x.x.x https://subdomain.example.com/
Run Code Online (Sandbox Code Playgroud)

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

curl --insecure https://subdomain.example.com/
Run Code Online (Sandbox Code Playgroud)

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


mc0*_*c0e 5

我将把它作为一个新的答案,因为它正朝着完全不同的方向发展。事实上,它并没有回答所提出的问题,但也许是OP应该寻找的方向。

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

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