Certbot / Let's Encrypt com Apache
Guia completo de Certbot com Apache: instalação, certificados, renovação, wildcard DNS, HSTS e troubleshooting.
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 guiar-te por toda a instalação do Certbot em Debian e Ubuntu, desde a obtenção automática com certbot --apache até à renovação, wildcards com validação DNS, troubleshooting de rate limits e boas práticas como OCSP stapling e HSTS.
Como o Certbot comunica com a Let's Encrypt para obter e renovar certificados
Instalação do Certbot no Debian/Ubuntu
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:
O que o certbot --apache faz automaticamente:
- Verifica que o domínio está acessível na porta 80
- Contacta a Let's Encrypt e obtém o desafio HTTP-01
- Coloca um ficheiro de verificação em /.well-known/acme-challenge/
- Valida o desafio com o servidor ACME
- Obtém os certificados (fullchain.pem, privkey.pem, cert.pem, chain.pem)
- Atualiza a configuração do Apache para usar SSL
- Ativa o redirecionamento 301 de HTTP para HTTPS
- 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.
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.
O Certbot vai mostrar-te um registo TXT para adicionares ao DNS. Algo como:
Para automatizar isto, usa um plugin DNS. Por exemplo, para Cloudflare:
Troubleshooting comum
| Problema | Causa | Solução |
|---|---|---|
| Porta 80 bloqueada | Firewall ou ISP bloqueia a porta 80 | Usa validação DNS-01 em vez de HTTP-01 |
| Rate limit excedido | Até 50 certificados por domínio registado a cada 7 dias (limite global, não por conta) | Espera ou usa wildcard para reduzir o número de certificados |
| Demasiadas renovações | Até 5 certificados com o mesmo conjunto de domínios a cada 7 dias (as renovações normais, via ARI, ficam fora deste limite) | Usa --dry-run para testar, não forces renovações reais |
| Certificado não renova | Apache não reinicia após renovação | Adiciona --deploy-hook "systemctl reload apache2" |
| DNS não propaga | Registo TXT demora a propagar | Com um plugin DNS, usa --dns-cloudflare-propagation-seconds 60 (ou o equivalente do teu plugin); no modo manual, espera antes de confirmares o desafio |
Boas práticas de segurança
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
- HSTS para forçar HTTPS no browser (o OCSP Stapling e o Must-Staple já não se aplicam a certificados da Let's Encrypt, que descontinuou o OCSP em 2025)
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, 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
Partilhar
Comentários 0
Ainda sem comentários — sê o primeiro.