如何testing给定IP地址的HTTPS URL

假设一个网站在多个服务器之间是负载均衡的。 我想运行一个命令来testing它是否工作,如curl DOMAIN.TLD 。 所以,要隔离每个IP地址,我手动指定IP。 但是许多网站可能在服务器上,所以我仍然提供一个主机头,如下所示: curl IP_ADDRESS -H 'Host: DOMAIN.TLD' 。 据我了解,这两个命令创build完全相同的HTTP请求。 唯一的区别是在后者中,我从cURL中取出DNS查找部分,并手动执行(如果我错了,请纠正我)。

迄今为止都很好。 但是现在我想为HTTPSurl做同样的事情。 再次,我可以testing它像这个curl https://DOMAIN.TLD 。 但我想手动指定IP,所以我运行curl https://IP_ADDRESS -H 'Host: DOMAIN.TLD' 。 现在我得到一个cURL错误:

 curl: (51) SSL: certificate subject name 'DOMAIN.TLD' does not match target host name 'IP_ADDRESS'. 

我当然可以通过告诉cURL不要关心证书(“-k”选项)来解决这个问题,但这并不理想。

有没有办法隔离与被SSLauthentication的主机连接的IP地址?

    想想我通过cURL手册find了一个解决scheme:

    curl https:// DOMAIN.TLD –resolve'DOMAIN.TLD:443:IP_ADDRESS'

    添加在[curl] 7.21.3。 删除支持添加在7.42.0。

    来自https://curl.haxx.se/libcurl/c/CURLOPT_RESOLVE.html

    您可以在/ etc / hosts中更改以使服务器认为该域位于某个IP。

    这是语法:

     192.168.10.20 www.domain.tld 

    这将使cURL使用你想要的IP地址,而没有SSL证书中断。

    如果您在Windows中运行curl,请使用双引号

     curl https://DOMAIN.TLD --resolve "DOMAIN.TLD:443:IP_ADDRESS" curl DOMAIN.TLD --resolve "DOMAIN.TLD:80:IP_ADDRESS" 

    您可以在前面跳过scheme/协议,但不能跳过–resolvestring中的端口号。