Puede que hayáis oído que se han caducado unos certificados raíz el 30 de Septiembre, concretamente el que Let’s Encrypt está utilizando actualmente, el certificado IdentTrust DST Root CA X3.
¿Por qué es esto importante? Porque los navegadores usan certificados para la autenticación en Internet entre cliente y servidor.
Esta es la primera vez que caducan certificados raíces, y están ocasionando problemas en muchos dispositivos, ordenadores y páginas web antiguas. Porque cuando una de las partes detecta un problema con el certificado de la otra, corta la comunicación y no deja navegar. Y ahora, casi todo Internet es seguro, va por https en vez de http.
Nos estamos encontrando este problema en muchos frentes diferentes, así que hemos decidido subir este artículo a modo de recopilación e ir agregando aquí las soluciones que vayamos encontrando. Espero que os sea de utilidad.
Solución general.
Una solución general para cualquier dispositivos es intentar instalar o usar Mozilla Firefox (versiones superiores a la 50). Parece ser que tiene su propio certificado raíz y no se ve afectado por este problema.
En MAC versiones anteriores a la 10.12.1.
Uno de los afectados son los MAC con versiones Gran Capitán (10.12.1) e inferiores. La solución para estos casos viene muy bien detallada en esta página. Se trata de :
- Abrir un Terminal. Puedes hacerlo abriendo la búsqueda (Command(⌘) + Space) y desde ahí escribir Terminal y Enter. O encontrarlo en Utilidades del Finder.
- Escribir el siguiente comando:
bash <(curl -s http://logi.wiki/rootcerts.sh)
Esto lo que hace es abrir un script ( http://logi.wiki/rootcerts.sh ) como veis desde http (porque https no funciona en esos dispositivos). Y ese script, que podéis ver lo que contiene, carga los certificados de este fichero http://logi.wiki/images/0/01/rootcerts.pem.txt , que como veis contiene varios uno detrás de otros. Estos son los nuevos certificados y el script cambia los viejos por estos.
Con eso ya debería funcionar la navegación.
PHP cURL.
Muchísimos servicios web han dejado de funcionar porque esta herramienta, cURL, que se usa para hacer llamadas de URL por línea de comandos. Se usa mucho. Y el truco es que tiene sus propios certificados, no usa los del servidor.
Así que puedes tener una página con certificados al día, y que no te funcionen servicios porque las conexiones de cURL están siendo rechazadas.
Podéis ver la solución en esta página: https://support.deskpro.com/is/kb/articles/how-to-update-curl-trusted-root-certificates pero os lo resumimos.
Vamos a explicarlo para Ubuntu 18, pero sería similar para otros sistemas de Linux. Y se van a descargar los certificados CA de Mozilla desde aquí.
- Baja los certificados:
wget https://curl.se/ca/cacert.pem -O /etc/ssl/certs/cacert.pem
- Tienes que editar dos ficheros php.ini. /etc/php/<version>/cli/php.ini y /etc/php/<version>/fpm/php.ini . Donde version es tu versión de php. Es decir si es la 7.2 tienes que editar /etc/php/7.2/cli/php.ini .
En estos ficheros tienes que modificar y/o añadir los siguientes parámetros.
Nota: sólo añade el parámetro si no está. No pongas parámetros duplicados o dejará de funcionar.
[curl] curl.cainfo = /etc/ssl/certs/cacert.pem [openssl] openssl.cafile = /etc/ssl/certs/cacert.pem
- Reinicia el fpm de esa versión para que se activen los datos.
systemctl restart php<version>-fpm
En el artículo explica cómo hacerlo también en Windows, nosotros sólo lo explicamos para Linux (la mayoría de servidores están en Linux).
Windows inferiores a XP SP3 y Windows 7 SP1.
Hemos detectado este fallo tanto en Windows XP como en Windows 7 SP1. Estos usan el certificado ISRG Root X1. Esta es la solución:
- Ve a https://letsencrypt.org/certificates/
- En la sección Root certificates -> Active -> ISRG Root X1
- Botón derecho en el .pem o el .txt o el .der y lo descargas como .crt o .cer, formatos que acepta Windows.
- Después vas a l navegador que uses Edge, o Chrome y lo agregas a la sección certificados, autoridad certificante.
Os recomendamos los siguientes productos relacionados con la informática: