我试图发送一个cURL请求到一个IP地址为xxxx的服务器。 它是健康监测系统的一部分。 在服务器上,我已经在端口80和443上为subdomain.example.comconfiguration了虚拟主机。对于SSL证书,我使用了一个* .example.com通配符证书,我在这个服务器上使用了几个服务器。
当我尝试curl到http://xxxx
它会得到相应的响应。 但是,当我curl到https://xxxx
它给出以下证书错误:
curl:(51)SSL:证书使用者名称'* .example.com'与目标主机名'xxxx'不匹配
我知道这是因为证书是特定于域名,我试图发送一个请求使用IP地址。 但正如我所说,这是我有一个限制(机架空间负载平衡器健康监测)。
有没有工作?
我会做出这个新的答案,因为它的方向是不一样的。 事实上,它并没有回答所提出的问题,但也许是OP应该寻找的方向。
使用负载平衡器时的常见configuration是,SSL证书根本不在Web服务器上,而是将SSL切换到负载平衡器。
最终用户向负载平衡器发出HTTPS请求。 负载均衡器打开SSL,并通过未encryption的HTTP将请求转发到Web服务器,并带有一个标头,告诉Web服务器原始请求已被encryption。 (对于在响应中embeddedURL以及避免通过http提供安全的内容很重要)。
您可以像往常一样使用域名,但像这样覆盖parsing器:
curl -v --resolve subdomain.example.com:443:xxxx https://subdomain.example.com/
尽pipe如此,保持很多这样的映射可能是尴尬的。 您可能更喜欢忽略证书不匹配:
curl --insecure https://subdomain.example.com/
如果你想的话,你可以使用--insecure --verbose
和parsing消息来检查证书是否是预期的域名,但这可能比使用--resolve