PHP Curl (con NSS) probablemente esté utilizando SSLv3 en lugar de TLS cuando se conecte a https
Estoy usando la biblioteca curl (con NSS) en PHP para conectarme a mi otro servidor. Todo estuvo bien hasta la semana pasada, cuando el servidor de destino dejó de admitir SSLv3 debido a la vulnerabilidad de poodle (CloudFlare por cierto). Ahora, intento establecer una conexión con TLS, pero sigo recibiendo un "error de conexión SSL".
Hay un código de muestra, estoy 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);
Desde mi entendimiento, establecerCURLOPT_SSLVERSION
a1
debe forzar la conexión a través de TLS.
Nota: tengoCURLOPT_SSL_VERIFYPEER => false
solo por depurar y no tengo la intención de dejarlo allí, una vez que resuelva este problema.
Esta es la salida:
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
Tengo todo esto en el proveedor de alojamiento compartido, por lo que no puedo cambiar ninguna configuración de php.ini ni actualizar ningún componente. Todo lo que tengo es phpinfo (). He verificado el soporte de TLS en la versión de estos componentes y debería estar bien. Aquí hay un extracto de 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
Creo que ese problema es el uso de SSLv3 en lugar de TLS, pero no estoy 100% seguro. Todo lo que estoy obteniendo es "error de conexión SSL" y no sé cómo averiguar qué versión de SSL se usó para conectarse.
¿Hay alguna forma, cómo verificar, qué versión SSL se utiliza para la conexión? ¿O me estoy perdiendo algo?
Gracias por cualquier consejo!