Mensaje de error
net::ERR_SSL_PROTOCOL_ERROR
Aparece como «ERR_SSL_PROTOCOL_ERROR» en la página de error y como «net::ERR_SSL_PROTOCOL_ERROR» en las herramientas de automatización y en DevTools.
Chrome, Edge and other Chromium browsers — "This site can't provide a secure connection"
Qué significa
Chrome no puede completar el handshake TLS porque la respuesta del servidor incumple el protocolo: lo más habitual es que no sea TLS en absoluto (un servidor HTTP sin cifrar en ese puerto) o que el servidor envíe datos de handshake malformados o inesperados. La página muestra «This site can't provide a secure connection — <host> sent an invalid response». Los certificados no intervienen.
Por qué ocurre
https:// a un puerto que sirve HTTP sin cifrar
frecuenteServidores de desarrollo, puertos de administración o un servidor al que le falta el agente de escucha TLS.
HSTS obliga a usar https:// en un sitio de desarrollo con HTTP sin cifrar
frecuenteLos dominios de la lista de precarga de HSTS (como .dev y .app) o los hosts que ya enviaron Strict-Transport-Security se fuerzan siempre a https://, aunque el servidor local solo hable HTTP.
Un servidor TLS mal configurado o defectuoso
ocasionalProxies con un protocolo de backend incorrecto, equipos de red con errores o un servidor que cierra la conexión a mitad del handshake.
Interferencia de un antivirus o un firewall
ocasionalLas funciones de análisis de HTTPS y los filtros de red que rompen el handshake producen el mismo error en sitios que, por lo demás, funcionan bien.
Cómo solucionarlo
- 1.
Comprobar qué protocolo habla el puerto
Si responde HTTP sin cifrar, usa el puerto TLS o habilita TLS en ese agente de escucha.
bash curl -si http://www.example.com:8080/ | head -1 # plain HTTP answers? openssl s_client -connect www.example.com:443 -servername www.example.com -brief </dev/null - 2.
Desarrollo: borrar HSTS o usar HTTPS local
Elimina la entrada HSTS del host en chrome://net-internals/#hsts (no es posible para dominios precargados) o dale al servidor de desarrollo un certificado de confianza local.
text Local development on a domain with HSTS (e.g. *.dev, or a site you once visited over HTTPS): open chrome://net-internals/#hsts, "Delete domain security policies" for the host, or serve the dev site over HTTPS with a locally trusted certificate (mkcert). - 3.
Propietarios del sitio: habilitar TLS donde se sirve https://
Configura el agente de escucha con TLS y un certificado, y prueba el handshake desde fuera.
text Site owners: make sure the port that browsers reach with https:// has TLS enabled (nginx: "listen 443 ssl;" plus ssl_certificate / ssl_certificate_key).