Uma loja de equipamento de escritório no Porto perdeu 78% do tráfego orgânico entre quarta e sexta. Ninguém tinha mexido no site há semanas. O problema cabia numa linha de log: o certificado SSL tinha expirado às 03:14 de quarta-feira.
Quando o Googlebot voltou a passar pelo site nessa manhã, encontrou ERR_CERT_DATE_INVALID. Não indexou nada. Pior, marcou o domínio como inseguro para os utilizadores que clicassem nos resultados ainda em cache. Em 48 horas, o Chrome estava a mostrar o ecrã vermelho de aviso antes da homepage.
Porque é que o Google reage tão mal
Desde 2014 que o HTTPS é sinal de ranking. Desde 2018 que o Chrome marca HTTP como "não seguro". Um certificado expirado é pior que HTTP — é HTTPS partido. O browser interpreta isso como tentativa de impersonation, mesmo que seja só o acme.sh que falhou a renovar.
O Googlebot trata um TLS handshake falhado como erro de crawl. Repete a tentativa, falha, repete, falha. Ao fim de algumas horas começa a desindexar. As páginas não desaparecem do índice de imediato, mas perdem ranking porque o sinal de confiança caiu a zero.
O que aconteceu na prática
- 03:14 quarta — certificado Let's Encrypt expira. O cron de renovação tinha falhado três vezes nos 30 dias anteriores. Ninguém viu o email.
- 08:00 quarta — primeiros utilizadores no telemóvel veem o aviso vermelho. Bounce rate dispara.
- 11:30 quarta — Googlebot passa, falha o handshake, regista soft 404 em massa.
- Quinta de manhã — Search Console envia alerta de "cobertura". Ninguém abre o Search Console.
- Sexta 09:00 — vendas paradas. Cliente liga ao programador. Programador descobre o problema em quatro minutos.
A renovação em si demorou 90 segundos. A recuperação do ranking demorou 23 dias. Durante esse tempo o concorrente ganhou as primeiras posições nas keywords principais e nunca mais as largou completamente.
Porque é que o cron falhou
O servidor tinha mudado de IP em Janeiro. O DNS apontava bem, mas o desafio HTTP-01 do Let's Encrypt batia num firewall novo que bloqueava pedidos vindos do range da ISRG. Cada tentativa de renovação registava um erro num log que ninguém lia.
Isto é o padrão. O certificado não expira porque é difícil renovar. Expira porque a renovação automática falha em silêncio e ninguém tem alarmes a apontar para os logs certos.
O que tens de fazer hoje
- Monitorização externa do certificado, não do cron. Usa um serviço como UptimeRobot ou StatusCake configurado para alertar 14 dias antes da expiração.
- Alertas no Telegram ou SMS, não email. Os emails de aviso do Let's Encrypt vão para uma caixa que ninguém vê.
- Verifica o Search Console todas as semanas. Se o Googlebot está a falhar, está lá escrito.
- Testa a renovação manualmente uma vez por trimestre. Se o cron funciona em produção mas não em staging, é porque tens drift de configuração.
- Documenta o procedimento de renovação de emergência. Quando o site cai à sexta às 18h, não queres estar a aprender acme.sh.
Um certificado expirado é a forma mais barata de perder seis meses de SEO. Custa zero euros prevenir e custa três salários recuperar.— Auditoria interna pós-incidente, cliente Porto
O custo real
A loja faturou menos 31 mil euros nesse mês face à média trimestral. O programador que montou o servidor cobrou 180 euros para resolver. O custo da prevenção tinha sido zero — um cron job extra de health check e um webhook para o Telegram.
Se vendes online em Portugal e ainda não tens monitorização independente do teu próprio servidor a vigiar o certificado, estás a uma renovação falhada de perder o trimestre. Não é alarmismo. É aritmética.
A regra é simples. Não confies no cron que renova. Confia no monitor externo que verifica que o cron renovou.