如何使用命令行 curl 指定 SSL 端口?

如何使用命令行 curl 指定 SSL 端口?

我正在尝试测试我的其中一台服务器上的 SSL 连接。该服务器位于负载均衡器 (LB) 后面,因此它正在端口 8090 上监听 SSL 连接。

--resolve我在与监听端口 443 的 LB 对话时使用了测试选项。

curl --resolve 'myservice.com:443:1.1.1.1' 'https://myservice.com'

但当我这样做时:

curl --resolve 'myservice.com:8090:2.2.2.2' 'https://myservice.com:8090'

curl 只是忽略端口并使用 443。当然,这会导致 DNS 缓存丢失,最终我使用公共 DNS IP...

* Added myservice.com:8090:2.2.2.2 to DNS cache
* About to connect() to myservice.com port 443 (#0)
*   Trying 3.3.3.3...
* Connected to myservice.com (3.3.3.3) port 443 (#0)

如何强制 curl 使用端口 8090 进行 SSL 连接?

谢谢。

答案1

使用 curl 7.22.0 (x86_64-pc-linux-gnu) libcurl/7.22.0 OpenSSL/1.0.1 zlib/1.2.3.4 libidn/1.23 librtmp/2.3 进行测试,标--resolve头在两个地方都指定了 https 和非标准端口,并且按预期工作。

答案2

如果--resolve不起作用,您可以指定主机标头(您可能需要使用来抑制证书警告-k):

curl -k -H 'Host: myservice.com' 'https://2.2.2.2:8090'

或者使用更详细的术语:

curl --insecure --header 'Host: myservice.com' 'https://2.2.2.2:8090'

相关内容