php - conexión - La solicitud de curl está fallando en el SSL?
error de conexión ssl android (6)
Tengo este codigo
if(ereg("^(https)",$url))
curl_setopt($curl,CURLOPT_SSL_VERIFYPEER,false);
// execute, and log the result to curl_put.log
$result = curl_exec($curl);
$error = curl_error($curl);
El error especificado es
SSL read: error:00000000:lib(0):func(0):reason(0), errno 104
Cualquier idea sobre la causa.
Agrega esto:
curl_setopt ($ curl, CURLOPT_SSL_VERIFYHOST, 0);
Tuve el mismo error y trabajé bien para mí.
Con SSL, asegúrese de tener la extensión openssl activada desde php.ini.
Creo que pretendes usar CURLOPT_SSL_VERIFYHOST, no CURLOPT_SSL_VERIFYPEER
Encontré un error críptico similar al trabajar con una biblioteca de terceros. CURLOPT_SSL_VERIFY[PEER|HOST]
el CURLOPT_SSL_VERIFY[PEER|HOST]
pero no hizo ninguna diferencia. Mi mensaje de error fue similar:
SSL read: error:00000000:lib(0):func(0):reason(0), errno 54
Así que visité http://curl.haxx.se/libcurl/c/libcurl-errors.html , buscando el código de error 54.
CURLE_SSL_ENGINE_SETFAILED (54) Failed setting the selected SSL crypto engine as default!
Sin embargo, esto era incorrecto: estaba haciendo otras solicitudes HTTPS usando curl en otras partes de la aplicación. Así que seguí cavando y encontré esta pregunta, R & RCurl: Error 54 en libcurl , que tenía esta joya:
La salida que ve es de lib / ssluse.c en el código fuente de libcurl y el "errno" mencionado no es el código de error libcurl sino la variable errno real en ese momento.
Entonces, no dejes que la salida de curl_error() te engañe. En su lugar, utilice curl_errno() para obtener el código de error correcto , que en este caso era en realidad 56, CURLE_RECV_ERROR. Tenía el nombre de host equivocado ...
He tenido el mismo problema. Resultó que el ssl en el sistema de destino tenía una mala configuración.
Después de verificar el módulo php curl, la versión GuzzleHttp, la versión openssl, llamé al enlace en el navegador y funcionó. Pero con curl --tlsv1 -kv https://www.example.com
en la consola todavía había un error.
Así que verifiqué la configuración de SSL en https://www.ssllabs.com/ssltest/ Fue calificada con B. Y allí donde había algunos errores del Protocolo de estado de certificados en línea (OCSP) que no había visto antes. Finalmente, cambié mi configuración en el sistema de destino a las sugerencias en https://cipherli.st/ reinicié el servidor web y todo funcionó. La nueva calificación en ssllabs ahora es A +.
Mi configuración nginx (Ubuntu 14.04, nginx 1.4.6-1ubuntu3.5):
ssl on;
ssl_certificate /etc/ssl/certs/1_www.example.com_bundle.crt;
ssl_certificate_key /etc/ssl/private/www.example.com.key;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
ssl_ciphers "EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH";
ssl_ecdh_curve secp384r1; # Requires nginx >= 1.1.0
ssl_session_cache shared:SSL:10m;
#ssl_session_tickets off; # Requires nginx >= 1.5.9
ssl_stapling on; # Requires nginx >= 1.3.7
ssl_stapling_verify off; # Requires nginx => 1.3.7
ssl_dhparam /etc/ssl/private/dhparams.pem;
ssl_trusted_certificate /etc/ssl/startssl.ca.pem;
resolver 8.8.8.8 valid=300s;
resolver_timeout 5s;
add_header Strict-Transport-Security "max-age=63072000; www.example.com; preload";
add_header X-Frame-Options DENY;
add_header X-Content-Type-Options nosniff;
La función curl_error
imprimió el mismo error, pero esto no está necesariamente relacionado con SSL. Es mejor imprimir el número de error preciso con la función curl_errno
y puede diagnosticar mejor desde allí. En mi caso me devolvió un código de error 52 y pude depurar desde allí, de hecho, el otro servidor no estaba enviando ningún dato.