Mensaje de error
net::ERR_CERT_AUTHORITY_INVALID
La pantalla de advertencia muestra el código como «NET::ERR_CERT_AUTHORITY_INVALID»; las herramientas de automatización (registros de Playwright, Puppeteer y Selenium) informan «net::ERR_CERT_AUTHORITY_INVALID», que es lo que imprime nuestra reproducción en modo headless. Edge y los demás navegadores Chromium usan el mismo código.
Chrome, Edge and other Chromium browsers — certificate error interstitial "Your connection is not private"
Qué significa
Chrome no puede construir la cadena desde el certificado del sitio hasta una raíz en la que confíe, así que bloquea la página con la pantalla de advertencia «Your connection is not private». Puede que el certificado sea autofirmado, que lo haya emitido una CA privada, que se presente sin su certificado intermedio o que lo haya sustituido algo que intercepta la conexión. Chrome usa el almacén de certificados del sistema operativo en Windows y macOS (y su propio Chrome Root Store para las CA públicas), y la base de datos NSS en Linux.
Por qué ocurre
El servidor no envía su certificado intermedio
frecuenteChrome a menudo descarga por su cuenta los intermedios que faltan (descarga AIA) y puede guardarlos en caché, así que la misma configuración errónea falla solo en algunos equipos, aplicaciones o primeras visitas.
Un certificado autofirmado o de una CA privada
frecuenteRouters, dispositivos NAS, servidores de desarrollo y sitios de intranet con certificados en los que nunca se le ha indicado al navegador que confíe.
Algo intercepta la conexión
frecuenteEl análisis de HTTPS de un antivirus, un proxy corporativo cuya raíz falta en este dispositivo, los portales cautivos de las redes Wi-Fi públicas o un atacante real.
Un sistema operativo o un almacén raíz desactualizado
ocasionalLas instalaciones muy antiguas de Android o Windows carecen de las raíces públicas más recientes, así que los certificados modernos parecen no ser de confianza solo en ellas.
Cómo solucionarlo
- 1.
Propietarios del sitio: comprobar la cadena servida
Si solo se envía un certificado y su emisor es un intermedio, la configuración del servidor está incompleta.
bash # Site owners: which certificates does the server send? (1 = intermediate missing) openssl s_client -connect www.example.com:443 -servername www.example.com -showcerts </dev/null 2>/dev/null \ | grep -E '^ *[0-9]+ s:|^ *i:' - 2.
Propietarios del sitio: servir la cadena completa
Configura el servidor web con el archivo de cadena completa para que todos los clientes (no solo Chrome) puedan verificarla.
text # nginx: serve leaf + intermediates ssl_certificate /etc/letsencrypt/live/www.example.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/www.example.com/privkey.pem; - 3.
Sitios internos: instalar la raíz privada en los dispositivos gestionados
Distribuye la raíz de la empresa mediante la gestión de dispositivos o el almacén del sistema operativo; en Linux, añádela a la base de datos NSS que lee Chrome.
bash # Internal sites: install the company root on the client (Chrome uses the OS store on # Windows and macOS; on Linux, the NSS database in ~/.pki/nssdb) certutil -d sql:$HOME/.pki/nssdb -A -t "C,," -n corp-root -i corp-root-ca.pem - 4.
Usuarios: comprobar quién emitió el certificado antes que nada
El visor de certificados muestra el emisor. Saltarse la advertencia («Proceed to … (unsafe)») debería reservarse para dispositivos propios conectados a redes de confianza; en redes desconocidas, eso entrega tu sesión a quien haya presentado el certificado.
text Click "Not secure" in the address bar → "Certificate details" and read the issuer. A company or security-vendor name on a public site = TLS inspection on your network. An unknown issuer on public Wi-Fi = do not proceed.