我在 PHP 中使用 curl 库(带有 NSS)连接到我的其他服务器。一切都很好,直到上周,由于贵宾犬漏洞(顺便说一下 CloudFlare),目标服务器停止支持 SSLv3。现在,我正在尝试使用 TLS 进行连接,但我仍然收到“SSL 连接错误”。
有示例代码,我正在使用:
$ch = curl_init();
curl_setopt_array( $ch, array(
CURLOPT_URL => 'https://www.lumiart.cz',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_SSLVERSION => 1,
CURLOPT_SSL_VERIFYPEER => false,
CURLOPT_VERBOSE => true
) );
$output = curl_exec( $ch );
echo $output;
print_r( curl_getinfo( $ch ) );
echo 'error:' . curl_error( $ch );
curl_close($ch);
据我了解,设置CURLOPT_SSLVERSION
为1
应该强制通过 TLS 连接。
注意:我CURLOPT_SSL_VERIFYPEER => false
只是为了调试,我不想把它留在那里,一旦我解决了这个问题。
这是输出:
Array
(
[url] => https://www.lumiart.cz
[content_type] =>
[http_code] => 0
[header_size] => 0
[request_size] => 0
[filetime] => -1
[ssl_verify_result] => 0
[redirect_count] => 0
[total_time] => 0
[namelookup_time] => 2.3E-5
[connect_time] => 0.005777
[pretransfer_time] => 0
[size_upload] => 0
[size_download] => 0
[speed_download] => 0
[speed_upload] => 0
[download_content_length] => -1
[upload_content_length] => -1
[starttransfer_time] => 0
[redirect_time] => 0
[certinfo] => Array
(
)
[primary_ip] => 2400:cb00:2048:1::681c:86f
[redirect_url] =>
)
error:SSL connect error
我在共享主机提供商处拥有所有这些,因此我无法更改任何 php.ini 配置或更新任何组件。我所拥有的只是 phpinfo()。我已经检查了这些组件版本上的 TLS 支持,应该没问题。这是phpinfo的摘录:
PHP Version 5.4.32
System Linux wl42-f262 2.6.32-431.5.1.el6.x86_64 #1 SMP Wed Feb 12 00:41:43 UTC 2014 x86_64
curl:
cURL support enabled
cURL Information 7.19.7
Age 3
Features
AsynchDNS No
Debug No
GSS-Negotiate Yes
IDN Yes
IPv6 Yes
Largefile Yes
NTLM Yes
SPNEGO No
SSL Yes
SSPI No
krb4 No
libz Yes
CharConv No
Protocols tftp, ftp, telnet, dict, ldap, ldaps, http, file, https, ftps, scp, sftp
Host x86_64-redhat-linux-gnu
SSL Version NSS/3.15.3
ZLib Version 1.2.3
libSSH Version libssh2/1.4.2
我认为,这个问题是使用 SSLv3 而不是 TLS,但我不是 100% 确定。我得到的只是“SSL 连接错误”,我不知道如何找出用于连接的 SSL 版本。
有没有办法,如何检查,哪个 SSL 版本用于连接?还是我错过了什么?