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.
Passos rápidos
- Leia o certificado de fora. Confira datas, nomes e cadeia com o openssl.
- Associe o erro à causa. Expirado, nome errado, cadeia não confiável ou problema de protocolo.
- Corrija no servidor. Renove, reemita com todos os nomes de host ou instale a cadeia completa.
- Permita TLS 1.2 e 1.3. Desative TLS 1.0 e 1.1 e garanta que clientes modernos consigam conectar.
- 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:
openssl s_client -connect yourdomain.com:443 -servername yourdomain.com </dev/null 2>/dev/null \
| openssl x509 -noout -subject -issuer -dates -ext subjectAltNameE isto mostra a cadeia e se ela é validada (procure Verify return code: 0 (ok)):
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:
sudo certbot renew --dry-run
systemctl list-timers | grep -i certbot
sudo systemctl reload nginx # or: sudo systemctl reload apache2Renovar 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:
sudo certbot --nginx -d yourdomain.com -d www.yourdomain.com --expandSe 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
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.3Com 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:
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.