Pular para o conteúdo principal

Tópicos Avançados

Troubleshooting

Onde encontrar os logs

# Logs do Certbot
/var/log/letsencrypt/letsencrypt.log

# Ver últimas linhas
tail -100 /var/log/letsencrypt/letsencrypt.log

# Executar com debug
certbot certonly --nginx -d domain.com --debug

Erros comuns e soluções

Challenge failed - Porta 80 bloqueada

ERRO: Challenge failed for domain domain.com
Type: connection
Detail: Fetching http://domain.com/.well-known/acme-challenge/xxx: Connection refused

Causa: Let's Encrypt não consegue acessar a porta 80.

Soluções:

# Verificar se porta 80 está aberta
curl -I http://domain.com/.well-known/acme-challenge/test

# Verificar firewall
sudo ufw status
sudo iptables -L -n | grep 80

# Verificar se Nginx/Apache está rodando
systemctl status nginx

Rate limit exceeded

ERRO: too many certificates already issued for exact set of domains

Causa: Excedeu o limite de 5 certificados idênticos por semana.

Soluções:

# Usar staging para testes (não conta no rate limit)
certbot certonly --test-cert --nginx -d domain.com

# Aguardar 1 semana ou usar domínio diferente para testes

DNS problem - NXDOMAIN

ERRO: DNS problem: NXDOMAIN looking up A for domain.com

Causa: Domínio não existe ou DNS não propagou.

Soluções:

# Verificar se DNS está configurado
dig A domain.com
dig AAAA domain.com

# Verificar propagação
nslookup domain.com 8.8.8.8

Unauthorized - CAA record

ERRO: CAA record for dominio.com prevents issuance

Causa: Registro CAA não autoriza Let's Encrypt.

Solução:

# Verificar CAA atual
dig CAA domain.com

# Adicionar Let's Encrypt ao CAA (no provedor DNS)
dominio.com. CAA 0 issue "letsencrypt.org"

Testar renovação

# Simular renovação (não renova de verdade)
certbot renew --dry-run

# Se falhar, verificar detalhes
certbot renew --dry-run --debug-challenges

Revogação de Certificados

Quando revogar?

SituaçãoAção
Chave privada comprometidaRevogar imediatamente
Servidor hackeadoRevogar após recuperar controle
Domínio vendido/transferidoRevogar antes da transferência
Certificado emitido por enganoRevogar
Renovação normalNão precisa revogar

Como revogar

# Revogar usando o certificado local
certbot revoke --cert-path /etc/letsencrypt/live/domain.com/cert.pem

# Revogar usando a chave privada (se não tiver mais o cert)
certbot revoke --cert-path /path/to/cert.pem --key-path /path/to/privkey.pem

# Motivos de revogação (opcional)
certbot revoke --cert-path /path/to/cert.pem --reason keycompromise
# Motivos: unspecified, keycompromise, affiliationchanged, superseded, cessationofoperation

Após revogar

# Remover certificado revogado do Certbot
certbot delete --cert-name domain.com

# Emitir novo certificado
certbot certonly --nginx -d domain.com
Revogação é irreversível

Após revogar, o certificado entra na CRL (Certificate Revocation List) e navegadores passam a rejeitá-lo. Não há como "desrevogar".

Backup e Migração

Backup completo

# Backup de toda a configuração Let's Encrypt
sudo tar -czvf letsencrypt-backup-$(date +%Y%m%d).tar.gz /etc/letsencrypt/

# Arquivos importantes:
# /etc/letsencrypt/live/ - Certificados atuais (symlinks)
# /etc/letsencrypt/archive/ - Histórico de certificados
# /etc/letsencrypt/renewal/ - Configurações de renovação
# /etc/letsencrypt/accounts/ - Credenciais da conta ACME

Migrar para novo servidor

# No servidor ANTIGO - criar backup
sudo tar -czvf letsencrypt-backup.tar.gz /etc/letsencrypt/

# Transferir para novo servidor
scp letsencrypt-backup.tar.gz user@newserver:/tmp/

# No servidor NOVO - restaurar
sudo tar -xzvf /tmp/letsencrypt-backup.tar.gz -C /

# Instalar Certbot no novo servidor e outros plugins se necessário
sudo apt install certbot python3-certbot-nginx

# Verificar certificados restaurados
certbot certificates

# Testar renovação
certbot renew --dry-run

Migração sem backup

Se não tiver backup, emita novos certificados no servidor novo:

# No novo servidor (após DNS apontar para ele)
certbot certonly --nginx -d domain.com
Transferência de domínio

Ao transferir domínio para outro proprietário, revogue seus certificados antes. O novo dono pode emitir certificados próprios.

Certificate Transparency

Certificate Transparency (CT) é um sistema público que registra todos os certificados emitidos por CAs. Isso permite:

  • Detectar certificados fraudulentos
  • Monitorar emissões para seu domínio
  • Auditoria de CAs

Consultar certificados emitidos

Use crt.sh para ver todos os certificados emitidos para seu domínio:

# Via navegador
https://crt.sh/?q=yourdomain.com

# Via API
curl "https://crt.sh/?q=yourdomain.com&output=json" | jq

Monitoramento automático

Configure alertas para ser notificado quando novos certificados forem emitidos:

Opção 1: Facebook Certificate Transparency Monitoring

Opção 2: Certspotter (gratuito)

# Consultar via API
curl "https://api.certspotter.com/v1/issuances?domain=seudominio.com&include_subdomains=true&expand=dns_names"

Opção 3: Script de monitoramento

#!/bin/bash
# Verificar novos certificados (executar via cron)
DOMAIN="seudominio.com"
CERTS=$(curl -s "https://crt.sh/?q=${DOMAIN}&output=json" | jq length)
echo "Total de certificados para ${DOMAIN}: ${CERTS}"

Por que monitorar?

CenárioO que significa
Certificado que você não emitiuPossível comprometimento ou ataque
Muitos certificados em curto períodoPossível abuso ou configuração errada
Certificado de CA desconhecidaInvestigar imediatamente
CT é público

Todos os certificados Let's Encrypt aparecem em logs CT. Isso é normal e esperado - a transparência aumenta a segurança do ecossistema.