O PHP Curl (com NSS) provavelmente está usando SSLv3 instalado no TLS ao conectar-se a https
Estou usando a biblioteca de curl (com NSS) em PHP para conectar-se ao meu outro servidor. Tudo estava bem até a semana passada, quando o servidor de destino parou de oferecer suporte ao SSLv3 devido à vulnerabilidade do poodle (a propósito, o CloudFlare). Agora, estou tentando fazer a conexão usando TLS, mas ainda estou recebendo o "erro de conexão SSL".
Existe um código de exemplo, estou usando:
$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);
Pelo meu entendimento, definindoCURLOPT_SSLVERSION
para1
deve forçar a conexão via TLS.
Nota: eu tenhoCURLOPT_SSL_VERIFYPEER => false
apenas para depuração e não pretendo deixá-lo lá, depois que eu descobrir esse problema.
Isso é produzido:
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
Eu tenho tudo isso no provedor de hospedagem compartilhada, portanto não posso alterar nenhuma configuração do php.ini ou atualizar nenhum componente. Tudo o que tenho é phpinfo (). Eu verifiquei o suporte a TLS na versão desses componentes e deve estar bem. Aqui está um trecho do 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
Acho que esse problema é o uso do SSLv3 em vez do TLS, mas não tenho 100% de certeza. Tudo o que estou recebendo é "Erro de conexão SSL" e não sei como descobrir qual versão SSL foi usada para conectar.
Existe uma maneira, como verificar, qual versão SSL é usada para conexão? Ou eu estou esquecendo de alguma coisa?
Obrigado por qualquer conselho!