这个问题很可能是由于客户端过时的TLS支持所致,因为禁用对等证书和主机名验证不起作用。
服务器的快速scan显示它们仅支持TLS 1.2连接,因此客户端必须支持此功能(SSLv3,TLS 1.0或TLS 1.1将不起作用)。这意味着需要OpenSSL 1.0.1或更高版本。
不幸的是,在代码中没有任何东西可以解决这个问题。他们需要确保他们的cURL库是用现代TLS支持构建的。
sslscan https://gdc-api.nci.nih.gov
Version: 1.10.5-rbsec
OpenSSL 1.0.2k 26 Jan 2017
Testing SSL server gdc-api.nci.nih.gov on port 443
TLS renegotiation:
Session renegotiation not supported
TLS Compression:
Compression disabled
Heartbleed:
TLS 1.0 not vulnerable to heartbleed
TLS 1.1 not vulnerable to heartbleed
TLS 1.2 not vulnerable to heartbleed
Supported Server Cipher(s):
Accepted TLSv1.2 256 bits ECDHE-RSA-AES256-GCM-SHA384
Accepted TLSv1.2 256 bits ECDHE-RSA-AES256-SHA384
Accepted TLSv1.2 128 bits ECDHE-RSA-AES128-GCM-SHA256
Accepted TLSv1.2 128 bits ECDHE-RSA-AES128-SHA256
Preferred Server Cipher(s):
TLSv1.2 256 bits ECDHE-RSA-AES256-GCM-SHA384
在某些系统上,至少看起来libcurl可能还需要更新。 – seandavi
是的,对不起,如果不明确。 libcurl也需要更新,以便了解后面的TLS协议以及如何将它们与更新的SSL库一起使用。 – drew010