Mensagem de erro
net::ERR_SSL_PROTOCOL_ERROR
Aparece como “ERR_SSL_PROTOCOL_ERROR” na página de erro e como “net::ERR_SSL_PROTOCOL_ERROR” em ferramentas de automação e no DevTools.
Chrome, Edge and other Chromium browsers — "This site can't provide a secure connection"
O que significa
O Chrome não conseguiu concluir um handshake TLS porque a resposta do servidor violou o protocolo: na maioria das vezes, ela nem era TLS (um servidor HTTP não criptografado nessa porta), ou o servidor enviou dados de handshake malformados ou inesperados. A página mostra “This site can't provide a secure connection — <host> sent an invalid response”. O problema não envolve certificados.
Por que acontece
https:// para uma porta que serve HTTP não criptografado
comumServidores de desenvolvimento, portas de administração ou um servidor sem listener TLS.
O HSTS força https:// em um site de desenvolvimento com HTTP não criptografado
comumDomínios da lista de pré-carregamento do HSTS (como .dev e .app) ou hosts que já enviaram Strict-Transport-Security são sempre acessados por https://, mesmo quando o servidor local só fala HTTP.
Um servidor TLS mal configurado ou com defeito
ocasionalProxies com o protocolo de backend errado, equipamentos de rede com bugs ou um servidor que fecha a conexão no meio do handshake.
Interferência de antivírus ou firewall
ocasionalRecursos de inspeção de HTTPS e filtros de rede que quebram o handshake produzem o mesmo erro em sites que, fora isso, funcionam normalmente.
Como corrigir
- 1.
Verificar qual protocolo a porta usa
Se a porta responder com HTTP não criptografado, use a porta TLS ou ative o TLS nesse listener.
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.
Desenvolvimento: limpar o HSTS ou usar HTTPS local
Exclua a entrada HSTS do host em chrome://net-internals/#hsts (não é possível para domínios pré-carregados) ou dê ao servidor de desenvolvimento um certificado confiável localmente.
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.
Donos do site: ativar o TLS onde https:// é servido
Configure o listener com TLS e um certificado, e teste o handshake de fora da rede.
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).