Todo site que serve tráfego pela internet deve usar HTTPS. Além de criptografar dados em trânsito entre seus visitantes e seu servidor, o HTTPS é um fator de ranking para mecanismos de busca, um requisito para APIs web modernas como HTTP/2 e service workers, e um sinal de confiança que os navegadores exibem de forma proeminente. O Let’s Encrypt removeu completamente a barreira de custo ao fornecer certificados SSL/TLS gratuitos e automatizados, e o Certbot é a ferramenta mais amplamente utilizada para obtê-los e gerenciá-los.
Este guia cobre tudo o que você precisa saber para configurar o Certbot com Nginx ou Apache, automatizar a renovação de certificados, obter certificados wildcard e fortalecer sua configuração HTTPS com headers de segurança.
Pré-requisitos
Antes de começar, certifique-se de que você tem:
- Um servidor Ubuntu (22.04 ou 24.04) com um endereço IP público
- Um nome de domínio registrado com registros DNS A apontando para seu servidor
- Nginx ou Apache instalado e servindo seu site
- Acesso ao terminal com privilégios sudo
- Porta 80 (HTTP) e porta 443 (HTTPS) abertas no seu firewall
Instalando o Certbot
# Remover qualquer certbot empacotado pelo SO para evitar conflitos
sudo apt-get remove certbot
# Instalar Certbot via snap
sudo snap install --classic certbot
# Criar link simbólico para que certbot esteja disponível no PATH
sudo ln -s /snap/bin/certbot /usr/bin/certbot
Obtendo Certificados para Nginx
Configuração Automática (Recomendado)
sudo certbot --nginx -d knowledgexchange.xyz -d www.knowledgexchange.xyz
O Certbot irá:
- Verificar que você controla o domínio colocando um arquivo de desafio no seu servidor
- Obter o certificado do Let’s Encrypt
- Modificar o bloco de servidor Nginx para habilitar SSL/TLS
- Configurar um redirecionamento HTTP-para-HTTPS
Configurando Auto-Renovação
Certificados do Let’s Encrypt expiram após 90 dias, então a renovação automatizada é essencial. O Certbot instala um timer systemd automaticamente que executa duas vezes ao dia.
Verifique se o timer está ativo:
sudo systemctl status certbot.timer
Teste a renovação:
sudo certbot renew --dry-run
Certificados Wildcard com Desafio DNS
sudo certbot certonly --manual --preferred-challenges dns \
-d knowledgexchange.xyz -d "*.knowledgexchange.xyz"
Desafio DNS Automatizado com Cloudflare
sudo snap set certbot trust-plugin-with-root=ok
sudo snap install certbot-dns-cloudflare
sudo certbot certonly --dns-cloudflare \
--dns-cloudflare-credentials /etc/letsencrypt/cloudflare/credentials.ini \
-d knowledgexchange.xyz -d "*.knowledgexchange.xyz"
Adicionando Headers de Segurança
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always;
add_header X-Content-Type-Options "nosniff" always;
add_header X-Frame-Options "SAMEORIGIN" always;
add_header X-XSS-Protection "1; mode=block" always;
add_header Referrer-Policy "strict-origin-when-cross-origin" always;
Solução de Problemas
Porta 80 Bloqueada
sudo ufw status | grep 80
sudo ufw allow 80/tcp
sudo ss -tlnp | grep :80
DNS Não Propagado
dig +short knowledgexchange.xyz
nslookup knowledgexchange.xyz
curl -s https://ifconfig.me
Limite de Taxa Excedido
Use --dry-run para testes e --staging para ambientes de desenvolvimento.
Conclusão
O Let’s Encrypt e o Certbot tornaram os certificados SSL/TLS acessíveis a todos. Com emissão e renovação automatizadas, não há desculpa para servir qualquer site em HTTP simples. Seguindo este guia, você configurou certificados gratuitos com renovação automática e fortaleceu sua configuração HTTPS com headers de segurança.