HTTPS grátis, automático e seguro. O Let's Encrypt democratizou o SSL e o Certbot é a ferramenta que torna tudo simples. Com Apache, a configuração é quase automática: quase.

Antes do Let's Encrypt, ter HTTPS num site custava dinheiro (certificados de terceiros) ou paciência (auto-assinados + confiança manual). Hoje, qualquer site pode ter HTTPS válido em minutos, sem pagar um cêntimo.

O Certbot é o cliente oficial da Let's Encrypt. Para Apache, ele faz tudo: obtém o certificado, configura o VirtualHost, ativa o redirecionamento HTTP→HTTPS, e ainda trata da renovação automática. Mas há nuances que é importante conhecer: desde wildcards com DNS-01 até troubleshooting de rate limits.

Vou mostrar-te:

  • Instalação do Certbot em Debian/Ubuntu
  • certbot --apache: obtenção e configuração automática
  • Renovação automática e verificação
  • Wildcard certificates com validação DNS
  • Troubleshooting: rate limits, renewal hooks
  • Boas práticas: OCSP stapling, HSTS, must-staple

Fluxo Certbot + Let's Encrypt

⬆ Como o Certbot comunica com a Let's Encrypt para obter e renovar certificados


Instalação do Certbot no debian/ubuntu

# Adicionar repositório oficial (recomendado para versão estável mais recente)
sudo apt update
sudo apt install certbot python3-certbot-apache

# Ou, se preferires o snap (versão mais atualizada):
sudo snap install certbot --classic
sudo ln -s /snap/bin/certbot /usr/bin/certbot
Copy

Nota: A versão do apt nos repositórios Debian estáveis pode estar desatualizada. Se usas Debian 12, o pacote python3-certbot-apache é geralmente suficiente. Para Ubuntu, o snap é a via recomendada pela própria Let's Encrypt.


Obter e configurar o certificado

Assumindo que o Apache já está configurado com um VirtualHost para o teu domínio (mesmo que só HTTP), o comando é simples:

# Obter certificado + configurar Apache automaticamente
sudo certbot --apache -d exemplo.pt -d www.exemplo.pt

# Se quiseres só obter o certificado sem alterar a config Apache:
sudo certbot certonly --apache -d exemplo.pt

# Se ainda não tens o domínio apontado ou estás numa fase de testes:
sudo certbot certonly --manual -d exemplo.pt
Copy

O que o certbot --apache faz automaticamente:

  1. Verifica que o domínio está acessível na porta 80
  2. Contacta a Let's Encrypt e obtém o desafio HTTP-01
  3. Coloca um ficheiro de verificação em /.well-known/acme-challenge/
  4. Valida o desafio com o servidor ACME
  5. Obtém os certificados (fullchain.pem, privkey.pem, cert.pem, chain.pem)
  6. Atualiza a configuração do Apache para usar SSL
  7. Ativa o redirecionamento 301 de HTTP para HTTPS
  8. Configura o timer de renovação automática

Renovação automática

Os certificados Let's Encrypt duram 90 dias. Mas não precisas de fazer nada: o Certbot instala um systemd timer que corre duas vezes por dia e renova automaticamente se faltarem menos de 30 dias.

# Verificar o timer
systemctl list-timers | grep certbot

# Testar renovação manual (dry-run — não altera nada)
sudo certbot renew --dry-run

# Ver estado de todos os certificados
sudo certbot certificates
Copy

Importante: Corre sempre certbot renew --dry-run depois de instalares. É a única forma de garantires que a renovação automática vai funcionar. Já vi servidores com certificados expirados porque o --dry-run nunca foi testado.


Wildcard certificates com validação DNS

Precisas de um certificado que cubra *.exemplo.pt? A validação HTTP-01 não funciona para wildcards. Tens de usar DNS-01: criar um registo TXT no DNS para provar que és dono do domínio.

# Obter wildcard com validação manual DNS
sudo certbot certonly --manual --preferred-challenges dns -d *.exemplo.pt -d exemplo.pt
Copy

O Certbot vai mostrar-te um registo TXT para adicionares ao DNS. Algo como:

_acme-challenge.exemplo.pt IN TXT "abcdef1234567890"
Copy

Para automatizar isto, usa um plugin DNS. Por exemplo, para Cloudflare:

# Instalar plugin Cloudflare para Certbot
sudo apt install python3-certbot-dns-cloudflare

# Criar ficheiro de credentials
sudo mkdir -p /etc/letsencrypt
sudo cat > /etc/letsencrypt/cloudflare.ini <<'EOF'
dns_cloudflare_api_token = o_teu_token_aqui
EOF
sudo chmod 600 /etc/letsencrypt/cloudflare.ini

# Obter wildcard
sudo certbot certonly --dns-cloudflare \
    --dns-cloudflare-credentials /etc/letsencrypt/cloudflare.ini \
    -d *.exemplo.pt -d exemplo.pt
Copy

Troubleshooting comum

ProblemaCausaSolução
Porta 80 bloqueadaFirewall ou ISP bloqueia a porta 80Usa validação DNS-01 em vez de HTTP-01
Rate limit excedidoMáximo 5 certificados por domínio por semanaEspera ou usa wildcard para reduzir o número de certificados
Demasiadas renovaçõesMáximo 5 renovações por certificado por semanaUsa --dry-run para testar, não forces renovações reais
Certificado não renovaApache não reinicia após renovaçãoAdiciona --deploy-hook "systemctl reload apache2"
DNS não propagaRegisto TXT demora a propagarUsa --manual-public-ip-logging-ok e espera 60s

Boas práticas de segurança

# 1. OCSP Stapling — o servidor prova que o certificado é válido sem o browser
#    ter de contactar a Let's Encrypt. Mais rápido e mais privado.

# No Apache:
SSLUseStapling on
SSLStaplingCache "shmcb:logs/stapling-cache(150000)"

# 2. Must-Staple — força o OCSP stapling. Se falhar, o browser rejeita.
#    Podes pedir certificados com must-staple:
sudo certbot certonly --apache --must-staple -d exemplo.pt

# 3. HSTS (HTTP Strict Transport Security)
Header always set Strict-Transport-Security "max-age=63072000; includeSubDomains; preload"

# 4. Renew hook — força reload do Apache após renovação
sudo certbot renew --deploy-hook "systemctl reload apache2"
Copy

OCSP Stapling

⬆ Como o OCSP Stapling acelera a validação de certificados


Recapitulando

  • Instala com apt install certbot python3-certbot-apache
  • certbot --apache -d exemplo.pt para tudo automático
  • Renovação automática via systemd timer: testa com --dry-run
  • Wildcards com DNS-01 (plugin Cloudflare ou manual)
  • Troubleshooting: portas, rate limits, renewal hooks
  • OCSP Stapling + HSTS + Must-Staple para segurança máxima

HTTPS grátis é uma das maiores conquistas recentes da internet. O Let's Encrypt e o Certbot tornaram-no acessível a qualquer pessoa com um domínio. Se ainda tens sites em HTTP em 2025, este é o empurrão que precisavas.

Experimenta correr o certbot --apache num site de teste e vê como é mágico ver o cadeado verde a aparecer no browser.

Recursos adicionais

Comentários (0)

Nenhum comentário ainda. Seja o primeiro!

Deixar comentário