cURL error 60: SSL certificate problem: unable to get local issuer certificate

Escenario

Todo empezó con el aviso de un proveedor. Un plugin de WordPress fallaba con el siguiente error:
cURL error 60: SSL certificate problem: unable to get local issuer certificate

Problema

Una búsqueda rápida con Google me lleva a la conclusión de que hay que editar el fichero de configuración php.ini. A fin de averiguar donde se encuentra el fichero en cuestión me sirvo del comando php -i | grep "Loaded Configuration File", que devuelve la siguiente información:
Loaded Configuration File => /etc/php/7.4/cli/php.ini
A continuación descargo http://curl.haxx.se/ca/cacert.pem y lo guardo en /etc/ssl/certs/. Edito los ficheros /etc/php/7.4/cli/php.ini y /etc/php/7.4/fpm/php.ini y añado/completo las siguientes directrices: Reinicio nginx y el problema persiste.

Solución

Me huelo que el problema va a estar relacionado con la cadena de confianza de certificado SSL del sitio web. Un openssl s_client -connect acme.com:443 me lo confirma:
CONNECTED(00000003)
depth=0 CN = *.acme.com
verify error:num=20:unable to get local issuer certificate
verify return:1
depth=0 CN = *.acme.com
verify error:num=21:unable to verify the first certificate
verify return:1
El servidor web —en este caso nginx— no está devolviendo la cadena entera del certificado. La solución pasa por editar el certificado referenciado en la clave ssl_certificate del fichero de configuración del sitio /etc/nginx/sites-enabled/acme.com y añadir los certificados que completan la cadena. Para este sitio usamos Sectigo (antes conocido como Comodo). Los certificados los entrega en dos ficheros:
  • STAR_acme_com.crt
  • STAR_acme_com.ca-bundle
Pues bien, hay que encadenar el ca-bundle al final del certificado antes de utilizarlo.

Publicaciones Similares

  • |

    Gestión de imágenes corruptas

    Escenario Nos encontramos ante una biblioteca de decenas de miles de archivos fotográficos, de los cuales un porcentaje considerable está corrupto. Objetivo Depurar las imágenes corruptas a fin de organizar como es debido nuestra biblioteca. Solución Nota: sólo aplicable a sistemas linux Vamos a necesitar la aplicación ImageMagick: $sudo apt-get install imagemagick y rsync, que debería venir instalado…

  • Extracción del texto de un pdf creado a partir de una imagen

    Escenario Una manera de preparar los exámenes es practicando con aquellos de años anteriores. Para los que estudiamos en la UNED, el centro de Calatayud cuenta con un extenso repositorio de PDFs de exámenes de previas convocatorias. Problema Los PDFs suelen ser de aquellos generados a partir de imágenes y no de texto lo que…

  • Autenticación múltiple en Spring boot: JWT y formulario

    Escenario Por exigencias de un tercero debemos adaptar nuestro servicio web para que sea compatible con autenticación por JWT. Hasta ahora las llamadas al API se hacían desde dentro de la aplicación usando las mismas credenciales del usuario autenticado por cookie. La configuración de la cadena de filtros de Spring Security es la siguiente:

  • Actualización de Mautic 4

    Este artículo va dedicado a aquellos administradores web entre cuyas labores se encuentre el mantenimiento de una instalación Mautic. Por eso no voy a explicar qué es Mautic: si no lo conoces, este artículo carece de interés. Vamos a partir de la base que el usuario UNIX, propietario de la instalación, es mautic y que…

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *