¿Como solucionar el error “curl: (60) SSL certificate problem: unable to get local issuer certificate “?

3.2/5 - (5 votos)

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.

5 comentarios en «¿Como solucionar el error “curl: (60) SSL certificate problem: unable to get local issuer certificate “?»

  1. 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.

    Responder
    • 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

      Responder
      • 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

        Responder
  2. 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.

    Responder

Deja un comentario