SSL/TLS CERTIFICATE AUTOMATION WITH CERTBOT Your Server Certbot Nginx / Apache ACME Client auto-renew cron 1. Request Let's Encrypt ACME Protocol Domain Validation HTTP-01 / DNS-01 Challenge 2. Challenge 3. Issue Cert Certificate fullchain.pem privkey.pem Visitors HTTPS Secure Certificates auto-renew every 60-90 days via systemd timer or cron Free, automated SSL/TLS certificates for every domain

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á:

  1. Verificar que você controla o domínio colocando um arquivo de desafio no seu servidor
  2. Obter o certificado do Let’s Encrypt
  3. Modificar o bloco de servidor Nginx para habilitar SSL/TLS
  4. 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.