used - php curl ssl connect error
PHP CURL CURLOPT_SSL_VERIFYPEER ignorado (2)
Por algún motivo, no puedo usar CURL con HTTPS. Todo estaba funcionando bien hasta que ejecuté la actualización de las bibliotecas curl. Ahora estoy experimentando esta respuesta al intentar realizar solicitudes CURL: Problema con el certificado SSL CA (¿ruta? ¿Derechos de acceso?)
Siguiendo las sugerencias publicadas aquí sobre cuestiones relacionadas, he tratado de hacer lo siguiente:
Deshabilitar la verificación para el host y el par
curl_setopt($cHandler, CURLOPT_SSL_VERIFYHOST, false); curl_setopt($cHandler, CURLOPT_SSL_VERIFYPEER, true);
Habilite
CURLOPT_SSL_VERIFYPEER
y apunte a cacert.pem descargado de http://curl.haxx.se/docs/caextract.htmlcurl_setopt($cHandler, CURLOPT_SSL_VERIFYPEER, true); curl_setopt($cHandler, CURLOPT_CAINFO, getcwd() . "/positiveSSL.ca-bundle");
También traté de hacer lo mismo con positiveSSL.ca-bundle, que se proporcionó como certificado CA de paquete para el servidor al que intento conectarme.
Editar la configuración de php ini con
curl.cainfo=cacert.pem
(archivo en el mismo directorio y accesible por apache)/etc/pki/nssdb
nombre de/etc/pki/nssdb
a/etc/pki/nssdb.old
Desafortunadamente, ninguno de los anteriores es capaz de resolver mi problema y recibo constantemente un mensaje de error con el mensaje SSL CA cert (path? Access rights?).
Y no necesito esta verificación en primer lugar (soy consciente de los problemas de seguridad).
¿Alguien tiene alguna otra sugerencia?
ACTUALIZAR
Después de actualizar a las últimas librerías y reiniciar toda la caja, no solo apache, que estaba haciendo todo, parece estar funcionando ahora de nuevo.
De acuerdo con la documentación: para verificar el certificado de host o de igual, debe especificar certificados alternativos con la opción CURLOPT_CAINFO
o se puede especificar un directorio de certificado con la opción CURLOPT_CAPATH
.
También mira CURLOPT_SSL_VERIFYHOST:
- 1 para verificar la existencia de un nombre común en el certificado de par SSL.
- 2 para verificar la existencia de un nombre común y también verificar que coincida con el nombre de host proporcionado.
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
Tuvimos el mismo problema en una máquina CentOS7. Desactivar el VERIFYHOST
VERIFYPEER
no resolvió el problema, ya no teníamos el error cURL pero la respuesta seguía sin ser válida. Hacer un wget
en el mismo enlace que el cURL estaba haciendo también resultó en un error de certificado.
-> Nuestra solución también fue reiniciar el VPS, esto lo resolvió y pudimos completar la solicitud nuevamente.
Para nosotros, esto parecía ser un problema de corrupción de memoria. Reiniciar el VPS volvió a cargar la biblioteca en la memoria y ahora funciona. Entonces, si la solución anterior de @clover
no funciona, intente reiniciar su máquina.