Estamos ante un error poco común, si has instalado curl desde repositorio con yum o con apt probablemente nunca encontraras un error de este tipo.
Este error suele aparecer en distros antiguas y esta relacionada con el cambio de versión de curl, si te ha salido este error es porque seguramente hayas actualizado curl compilándolo y no hayas incluido el certificado de confianza.
Tambien puede aparecer al intentar hacer un wget con las nuevas versiones de openssl:
OpenSSL: error:1407742E:SSL routines:SSL23_GET_SERVER_HELLO:tlsv1 alert protocol version
Unable to establish SSL connection
Estos errores son debidos a que en versiones antiguas de curl o openssl no se establecía relación de confianza y no se necesitaba ningún certificado, pero las versiones actuales si lo requieren y al no encontrarlo el sistema devuelve este error.
La solución es bastante sencilla, basta con descargarse el certificado en la página oficial de curl https://curl.haxx.se/ca/cacert.pem y guardarlo en la ubicación de los certificados de la versión de Linux en la que estés trabajando.
"/etc/ssl/certs/ca-certificates.crt", // Debian/Ubuntu/Gentoo etc.
"/etc/pki/tls/certs/ca-bundle.crt", // Fedora/RHEL 6
"/etc/ssl/ca-bundle.pem", // OpenSUSE
"/etc/pki/tls/cacert.pem", // OpenELEC
"/etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem", // CentOS/RHEL 7
En el caso de que necesites utilizar curl con php bastaría con añadirlo al fichero de configuración php.ini
curl.cainfo = "/etc/ssl/certs/cacert.pem"
openssl.cafile = "/etc/ssl/certs/cacert.pem"
Con estos pasos el error queda resuelto y podrás utilizar curl perfectamente.
Muchísimas gracias. Lo hice con XAMPP y puse el archivo .pem dentro de la ruta C:\xampp\php\cacert.pem, después agregué las siguientes líneas al php.ini:
curl.cainfo = “C:\xampp\php\cacert.pem”
openssl.cafile = “C:\xampp\php\cacert.pem”
Luego de eso reinicié el Apache y todo funcionó correctamente.
Gracias.
Amigo me podrías ayudar. Tengo más de un día tratando de resolver esto y todas las opciones que encuentro no me ayudan.
Estoy utilizando xampp en windows, coloco todo como me dicen en las soluciones y todavia me sigue saliendo el mismo error
Buenos dias.
Desgraciadamente esta solucion es para linux, en windows va a tener que utilizar otro metodo.
Hola buenas tardes, quizás ya lo hayas resuelto… pero en Windows yo lo arregle así:
En el php.ini habilita la extensión:
extension=curl (le quitas el ; que esta delante)
Luego busca: ;curl.cainfo = y también le quitas el ” ; ” y lo reemplazas por:
curl.cainfo=”C:/carpeta/donde/este/el/certificado/cacert.pem”
Por ultimo reinicias el servidor apache, esto me funciona tanto en localhost como en un servidor web IIS
curl.cainfo=”C:/carpeta/donde/este/el/certificado/cacert.pem” esta es la solucion definitiva pero reemplaza las comillas por estas “” , no uses las inclinadas.