Guia · 4 min de leitura

Erros de certificado SSL, explicados e resolvidos

Resposta curta: um erro de certificado significa que o navegador não conseguiu confirmar que está mesmo falando com seu site. As causas comuns são um certificado expirado (ERR_CERT_DATE_INVALID), um certificado que não inclui o nome de domínio exato (ERR_CERT_COMMON_NAME_INVALID), um certificado intermediário ausente ou um autoassinado (ERR_CERT_AUTHORITY_INVALID), ou um servidor que só fala versões antigas do TLS. Um comando openssl mostra qual é; a correção quase sempre está no servidor, e a renovação automática evita a maioria deles.

Atualizado em · HackGrade

Verifique seu site primeiro. A análise gratuita mostra quais destas correções você precisa. Teste de SSL e HTTPS

Passos rápidos

  1. Leia o certificado de fora. Confira datas, nomes e cadeia com o openssl.
  2. Associe o erro à causa. Expirado, nome errado, cadeia não confiável ou problema de protocolo.
  3. Corrija no servidor. Renove, reemita com todos os nomes de host ou instale a cadeia completa.
  4. Permita TLS 1.2 e 1.3. Desative TLS 1.0 e 1.1 e garanta que clientes modernos consigam conectar.
  5. Automatize a renovação. Os certificados agora duram no máximo 200 dias, e em breve 100, então a renovação precisa ser automática.

O código e a configuração ficam em inglês.

Primeiro: olhe o certificado de fora

O navegador mostra o código do erro abaixo do aviso (clique em Avançado). Depois, leia o que seu servidor realmente envia. Isto mostra para quem é o certificado, quem o emitiu, suas datas e todos os nomes de host que ele cobre:

Terminal
openssl s_client -connect yourdomain.com:443 -servername yourdomain.com </dev/null 2>/dev/null \
  | openssl x509 -noout -subject -issuer -dates -ext subjectAltName

E isto mostra a cadeia e se ela é validada (procure Verify return code: 0 (ok)):

Terminal
openssl s_client -connect yourdomain.com:443 -servername yourdomain.com </dev/null 2>/dev/null \
  | grep -E '^ *[0-9]+ s:|Verify return code'

NET::ERR_CERT_DATE_INVALID: expirado (ou relógio errado)

A data notAfter do certificado já passou ou, se só um visitante vê o erro, o relógio do aparelho dele está errado. Renove o certificado e recarregue o servidor web. Se você usa o Certbot, confira se a renovação automática está rodando de verdade:

Terminal
sudo certbot renew --dry-run
systemctl list-timers | grep -i certbot
sudo systemctl reload nginx   # or: sudo systemctl reload apache2

Renovar não é mais uma tarefa anual. Pelas regras do CA/Browser Forum, certificados públicos emitidos a partir de 15 de março de 2026 valem no máximo 200 dias; a partir de 15 de março de 2027 o limite é de 100 dias e, a partir de 15 de março de 2029, de 47 dias. A renovação manual não vai dar conta, então use os certificados automáticos da sua hospedagem ou um cliente ACME como o Certbot.

NET::ERR_CERT_COMMON_NAME_INVALID: nome errado

O certificado é válido, mas não para o nome na barra de endereços. Compare o endereço com a lista subjectAltName do primeiro comando. Causas típicas: o certificado cobre yourdomain.com mas não www.yourdomain.com; um subdomínio novo foi adicionado sem certificado; ou o servidor envia o certificado de outro site no mesmo IP (o site padrão). Reemita o certificado com todos os nomes que você usa:

Terminal
sudo certbot --nginx -d yourdomain.com -d www.yourdomain.com --expand

Se os nomes estão certos, mas você ainda recebe o certificado de outro site, confira se o bloco server ou o virtual host deste domínio tem suas próprias linhas de certificado e o server_name correto.

NET::ERR_CERT_AUTHORITY_INVALID: emissor não confiável ou cadeia quebrada

Ou o certificado é autoassinado (serve para testes, nunca para um site público), ou o servidor envia só o seu certificado, sem o intermediário que o liga a uma raiz confiável. Alguns navegadores de desktop preenchem essa lacuna sozinhos, então o site pode funcionar para você e falhar em celulares ou em outras ferramentas. Configure sempre o arquivo de cadeia completa:

nginx / Apache
# nginx
ssl_certificate     /etc/letsencrypt/live/yourdomain.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/yourdomain.com/privkey.pem;
ssl_protocols TLSv1.2 TLSv1.3;

# Apache 2.4.8+
SSLCertificateFile    /etc/letsencrypt/live/yourdomain.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/yourdomain.com/privkey.pem
SSLProtocol -all +TLSv1.2 +TLSv1.3

Com um certificado comprado de um fornecedor comercial, baixe a versão “full chain” ou “bundle” e use-a no lugar do arquivo de certificado avulso.

ERR_SSL_PROTOCOL_ERROR e ERR_SSL_VERSION_OR_CIPHER_MISMATCH

O navegador e o servidor não conseguiram combinar um protocolo. Causas comuns: o servidor só oferece TLS 1.0 ou 1.1, que os navegadores atuais não aceitam mais; a porta 443 responde com HTTP sem criptografia; ou o certificado e a chave não combinam. Teste quais versões seu servidor aceita:

Terminal
openssl s_client -connect yourdomain.com:443 -servername yourdomain.com -tls1_2 </dev/null 2>/dev/null | grep -E 'Protocol|Cipher'
openssl s_client -connect yourdomain.com:443 -servername yourdomain.com -tls1_3 </dev/null 2>/dev/null | grep -E 'Protocol|Cipher'

Os dois devem mostrar um protocolo e uma cifra. O SSL Configuration Generator da Mozilla oferece uma configuração atual e testada para nginx, Apache e outros servidores.

Erro 526 do Cloudflare e loops de redirecionamento

Com o Cloudflare na frente do site há dois certificados: o do Cloudflare para os visitantes e o do seu servidor para a conexão vinda do Cloudflare. No modo Full (strict), o erro 526 significa que o certificado do seu servidor é inválido ou expirou; renove-o ou instale um Cloudflare Origin Certificate gratuito. Evite o modo Flexible: a conexão com seu servidor não é criptografada e, combinada com um redirecionamento para HTTPS no servidor, causa ERR_TOO_MANY_REDIRECTS.

Quando o problema está do lado do visitante

  • Data ou hora erradas no aparelho geram erros de data em todos os sites.
  • Antivírus ou a “inspeção HTTPS” de empresas substituem certificados e podem causar erros de emissor.
  • Páginas de login de Wi-Fi públicos interceptam a primeira requisição HTTPS até o visitante entrar.

Se só uma pessoa vê o erro e as verificações com openssl acima estão limpas, provavelmente é um desses casos.

O que o HackGrade verifica

A análise gratuita verifica se seu certificado é confiável, avisa quando ele expira em menos de três semanas e aponta versões antigas do TLS e a falta de redirecionamento de HTTP para HTTPS. Os planos Site, Business e Agency repetem a análise toda semana e enviam um alerta quando algo muda. Mais contexto em Meu certificado SSL está configurado corretamente?

Perguntas frequentes

Como corrijo o NET::ERR_CERT_DATE_INVALID?

Renove o certificado e recarregue o servidor web. Se acontecer de novo, a renovação automática não está funcionando: rode “certbot renew --dry-run” ou confira o painel da hospedagem. Se só um visitante vê o erro, o relógio do aparelho dele provavelmente está errado.

Por que meu site funciona no meu computador, mas dá erro de certificado no celular?

Normalmente falta o certificado intermediário. Alguns navegadores de desktop o buscam sozinhos; muitos outros clientes não. Configure a cadeia completa (fullchain.pem ou o bundle do fornecedor).

Posso pedir aos visitantes que cliquem em “Continuar mesmo assim”?

Não. O aviso existe porque a conexão não pode ser verificada, e ensinar clientes a ignorá-lo os coloca em risco. Corrija o certificado.

Por quanto tempo os certificados SSL valem agora?

Certificados públicos emitidos desde 15 de março de 2026 duram no máximo 200 dias. O limite cai para 100 dias em 15 de março de 2027 e para 47 dias em 15 de março de 2029, então a renovação tem de ser automática.

Fontes

Guias relacionados

Grátis · Na hora · Sem cadastro

Descubra sua nota antes que outra pessoa descubra.

Análise passiva. Nada é atacado sem a sua permissão.

Comece grátis. Pro a partir de US$ 29 por mês (cerca de US$ 24 no plano anual), ou um relatório avulso completo por US$ 29. Ver preços