ERR_SSL_PROTOCOL_ERROR

RESPOSTA DIRETA
ERR_SSL_PROTOCOL_ERROR significa que o navegador não conseguiu concluir um handshake TLS com o servidor. As causas comuns incluem HTTP simples na porta 443, um virtual host HTTPS incorreto, uma incompatibilidade de CDN ou proxy ou uma configuração TLS incompatível. Teste o endpoint HTTPS e o certificado pelo lado do servidor ou da rede antes de alterar as configurações do navegador.
Pontos principais
- Primeiro, determine se a porta 443 está falando TLS; uma resposta HTTP simples ou outro protocolo nessa porta costuma disparar esse erro.
- Um certificado pode estar presente, mas ser inutilizável se estiver expirado, não incluir o hostname solicitado, estiver sem certificados intermediários ou não tiver sido carregado após a renovação.
- As configurações de CDN, reverse proxy e load balancer devem corresponder ao protocolo HTTPS, à porta, ao hostname e à configuração de certificado reais da origem.
- Use
openssl s_clientcom SNI para distinguir um problema no listener de problemas de seleção de certificado, cadeia ou política TLS. - Não desative permanentemente a verificação de certificados; corrija o certificado da origem e a configuração TLS.
Site Administrator
O que este erro significa e como reconhecê-lo
- O Chrome ou o Edge informa “Este site não pode fornecer uma conexão segura” com
ERR_SSL_PROTOCOL_ERROR. - A falha pode afetar o site inteiro, um subdomínio ou apenas um hostname atrás de um proxy ou load balancer.
- O HTTP simples na porta 80 pode funcionar enquanto o HTTPS falha, indicando um problema no caminho TLS, e não necessariamente na aplicação.
- O erro pode começar após uma renovação de certificado, migração de servidor, alteração na configuração do servidor web, mudança de CDN ou mudança no serviço que escuta na porta 443.
- Um teste direto na origem e um teste usando o hostname público podem produzir resultados diferentes quando há uma CDN, um reverse proxy ou um load balancer envolvido.
Causas principais, por probabilidade
- A porta 443 está servindo HTTP simples ou outro protocolo que não é TLS. O listener HTTPS pode estar ausente ou o serviço errado pode ter sido associado à porta 443. Nesse caso, o navegador recebe dados que não correspondem a um handshake TLS.
- O virtual host HTTPS ou o server block está incorreto. O servidor pode estar escutando no endereço errado, selecionando o hostname incorreto ou não ter as diretivas TLS exigidas pelo servidor web.
- Há uma incompatibilidade na origem de uma CDN, reverse proxy ou load balancer. O proxy pode estar usando HTTP enquanto a origem espera HTTPS, ou pode estar se conectando à porta ou ao backend errados.
- A configuração TLS é incompatível ou está malformada. Versões de protocolo não compatíveis, configurações restritivas de cipher, problemas de roteamento SNI ou um dispositivo que termina TLS configurado incorretamente podem interromper o handshake antes da validação do certificado.
- O certificado ou a cadeia não pode ser usado. Um certificado expirado, um certificado intermediário ausente ou um certificado que não cobre o hostname solicitado pode impedir uma conexão segura. Alguns navegadores e caminhos de conexão exibem, em vez disso, um aviso de certificado mais específico.
- Um certificado renovado não foi carregado pelo serviço. Atualizar os arquivos do certificado no disco não altera o certificado apresentado por um servidor web em execução até que sua configuração seja recarregada ou reiniciada de acordo com o procedimento documentado do serviço.
Como corrigir
1. Determine se a falha é pública, específica da origem ou local
Tente acessar o hostname exato que falha a partir de outra rede ou dispositivo. Se apenas um computador falhar, verifique o software de segurança local, os proxies de interceptação e o horário do sistema. Se todos os clientes falharem, prossiga com a investigação do servidor, proxy, CDN ou load balancer.
Se o HTTP funciona, mas o HTTPS não, concentre-se no listener TLS, na porta 443, na seleção do certificado e em qualquer proxy entre o cliente e a origem. Não presuma que o funcionamento do HTTP comprova que a configuração HTTPS está correta.
2. Teste o handshake TLS sem alterar o estado do servidor
Em um terminal administrativo com acesso de rede ao endpoint, execute:
openssl s_client -connect [your-hostname]:443 -servername [your-hostname] -showcertsA opção -servername é importante quando o SNI seleciona certificados ou virtual hosts. Registre se o handshake é iniciado, qual certificado é retornado, a data de expiração do certificado, os hostnames do Subject Alternative Name e se os certificados intermediários estão incluídos.
- Se a conexão retornar HTTP simples ou falhar antes que qualquer certificado apareça, inspecione o listener da porta 443 e o roteamento do proxy.
- Se um certificado for retornado, compare-o com o hostname solicitado e verifique suas datas de validade e sua cadeia.
- Se um teste direto na origem funcionar, mas o hostname público falhar, inspecione a CDN, o reverse proxy, o load balancer ou o caminho DNS, em vez de alterar a aplicação.
3. Verifique o listener HTTPS e o roteamento do hostname
Com acesso e autorização apropriados ao servidor, inspecione a configuração ativa do servidor web e confirme que:
- o serviço pretendido está escutando na porta 443;
- o server block ou virtual host HTTPS está habilitado;
- o hostname solicitado está incluído nas configurações relevantes de
server_nameouServerName/ServerAlias; - o TLS está habilitado para esse listener; e
- os caminhos do certificado e da chave privada apontam para os arquivos pretendidos.
No Nginx, verifique o server block habilitado e sua configuração listen 443 ssl. No Apache, verifique a configuração <VirtualHost *:443> e SSLEngine on. Não copie diretivas entre produtos sem verificar a sintaxe e a versão compatíveis com o servidor instalado.
4. Valide o certificado e a cadeia
Confirme que o certificado apresentado:
- não está expirado nem inválido por ainda não estar vigente;
- cobre o hostname exato nas entradas de Subject Alternative Name;
- corresponde à chave privada associada; e
- vem acompanhado da cadeia de certificados intermediários necessária.
Um certificado para o domínio raiz não cobre automaticamente todos os subdomínios. O subdomínio deve estar listado explicitamente ou ser coberto por um certificado wildcard apropriado. Se o servidor apresentar apenas o certificado leaf, instale o arquivo de cadeia fornecido pela autoridade certificadora no formato exigido pelo servidor web.
5. Verifique a renovação e o carregamento do certificado
Em uma implantação gerenciada pelo Certbot, um administrador pode executar certbot renew --dry-run para testar o fluxo de renovação sem emitir um certificado de produção. Revise a saída, a configuração de renovação, as permissões e o hook de reload do serviço.
Se a renovação tiver sido concluída, mas os clientes ainda receberem o certificado antigo, confirme se o servidor web ou o proxy que termina TLS carregou os novos arquivos. Um reload ou restart altera o estado do serviço e deve ser realizado somente durante uma janela de manutenção aprovada, com um plano de rollback e seguindo o procedimento documentado do produto. Mantenha essa ação operacional separada dos diagnósticos somente de leitura.
6. Inspecione as configurações TLS da CDN, do proxy e do load balancer
Identifique onde o TLS termina: na CDN, no proxy de borda, no load balancer ou no servidor de origem. Verifique se o protocolo e a porta de origem configurados correspondem ao que a origem realmente oferece.
Se uma CDN oferecer modos como Flexible, Full ou Full (strict), selecione o modo que corresponda à configuração real da origem e à validade do certificado. Um modo menos rigoroso pode ocultar o problema subjacente ou criar uma falha diferente; ele não substitui de forma duradoura um certificado de origem válido. Faça alterações de configuração somente com autorização e, em seguida, teste novamente o hostname público e o caminho até a origem, quando possível.
7. Verifique interferências de protocolo, SNI ou dispositivos de rede
Se o endpoint apresentar um certificado válido e correspondente, mas o handshake ainda falhar, compare os resultados de redes e clientes TLS diferentes. Revise as configurações do firewall, load balancer, web application firewall e inspeção TLS em busca de versões de protocolo bloqueadas, políticas de cipher não compatíveis, roteamento SNI incorreto ou tráfego alterado. Preserve a saída do handshake e os logs relevantes do servidor para o provedor de hospedagem ou administrador da rede.
Prevenção e como verificar a correção
- Monitore a expiração dos certificados independentemente do mecanismo de renovação e emita alertas antes que eles se tornem inválidos.
- Teste a renovação em um fluxo de não produção ou dry run e verifique se o hook de reload do serviço realmente apresenta o novo certificado.
- Mantenha um inventário documentado de cada hostname, ponto de terminação TLS, certificado, chave privada e cadeia intermediária.
- Após alterações em certificados, proxies, load balancers ou mapeamentos de portas, teste o hostname público e cada subdomínio importante.
- Revise as alterações de configuração TLS quanto à compatibilidade de SNI, versão de protocolo, cipher e porta de origem antes da implantação.
- Guarde detalhes recentes do servidor, proxy e certificado para que um handshake com falha possa ser comparado com a última configuração conhecida como funcional.
Quando buscar ajuda externa
Encaminhe o caso ao provedor de hospedagem, administrador da CDN ou do load balancer ou equipe de rede quando o endpoint retornar um certificado correspondente válido e uma cadeia completa, mas o handshake ainda falhar. Inclua o hostname exato, o horário da falha, se o teste foi direto ou passou por um proxy, os resultados de openssl s_client, os logs relevantes do servidor web ou proxy e as alterações recentes de configuração. Evite compartilhar chaves privadas ou outros segredos.
Também é apropriado escalar o caso quando você não consegue identificar qual serviço termina o TLS ou quando uma alteração de certificado, reload ou restart exige acesso no nível do provedor. Mantenha qualquer restart ou reload dentro dos procedimentos aprovados de manutenção e rollback do provedor.
Perguntas frequentes
ERR_SSL_PROTOCOL_ERROR é causado por um certificado expirado?
Ele pode estar relacionado à validade do certificado, mas um certificado expirado costuma produzir um aviso mais específico sobre o certificado. Verifique o resultado completo do handshake em vez de presumir que o erro do navegador identifica o problema exato do certificado.
Por que o HTTP funciona enquanto o HTTPS exibe ERR_SSL_PROTOCOL_ERROR?
HTTP e HTTPS normalmente usam portas e listeners diferentes. Se o HTTP funciona, mas o HTTPS falha, a aplicação pode estar saudável enquanto a porta 443 apresenta uma configuração HTTPS ausente, um serviço incorreto ou um problema de TLS entre o proxy e a origem.
O que openssl s_client revela nesse erro?
Ele mostra se um handshake TLS é iniciado, qual certificado o endpoint apresenta, se o SNI seleciona o certificado esperado e qual cadeia de certificados é retornada. Isso ajuda a distinguir um listener que não usa TLS de um problema de certificado, cadeia ou política TLS.
Um certificado para o domínio principal pode cobrir um subdomínio?
Não automaticamente. O subdomínio solicitado deve aparecer nos Subject Alternative Names do certificado ou ser coberto por uma entrada wildcard adequada. Um certificado que cobre apenas o domínio raiz não é suficiente para todos os subdomínios.
Como solucionar esse erro com o Cloudflare ou outra CDN?
Determine se o erro ocorre entre o navegador e a CDN ou entre a CDN e a origem. Verifique o hostname, a porta, o protocolo, a validade do certificado e o modo de verificação configurados para a origem. Corrija a configuração da origem em vez de enfraquecer permanentemente a verificação do certificado.
Por que o certificado antigo continua sendo usado após a renovação?
O processo de renovação pode ter gravado um novo certificado no disco sem recarregar o serviço que termina o TLS. Confirme o certificado apresentado pelo endpoint ativo e revise o hook de reload do serviço antes de realizar um reload ou restart autorizado.
Documentação adicional
Para obter detalhes oficiais de implementação, consulte a documentação atual do servidor web ou terminador TLS em uso, a documentação da autoridade certificadora ou do Certbot sobre renovação e o guia de configuração TLS da origem do provedor de CDN ou reverse proxy. As referências apropriadas dependem de onde o TLS termina e de qual produto de servidor está instalado. Use a documentação do produto relevante para o formato da cadeia de certificados, os procedimentos de reload, as configurações de protocolo compatíveis, o comportamento do SNI e os modos de proxy.