SSL grátis com Let's Encrypt e Nginx
HTTPS é obrigatório em 2025. Browsers marcam sites HTTP como "não seguro", o Google penaliza no ranking e APIs modernas exigem TLS. Let's Encrypt fornece certificados SSL gratuitos e automáticos. Com Certbot e Nginx na VPS, o processo leva menos de 5 minutos e a renovação é automática.
Instalar Certbot e obter o primeiro certificado
Certbot é o cliente oficial do Let's Encrypt. Instale via snap para a versão mais recente:
# Instalar Certbot
apt install -y snapd
snap install core && snap refresh core
snap install --classic certbot
ln -s /snap/bin/certbot /usr/bin/certbot
# Obter certificado com configuração automática do Nginx
certbot --nginx -d seudominio.com.br -d www.seudominio.com.br
# Múltiplos subdomínios no mesmo certificado
certbot --nginx -d app.dominio.com.br -d api.dominio.com.br -d admin.dominio.com.br
# Ver certificados emitidos
certbot certificatesConfiguração Nginx com SSL otimizado
Configuração SSL segura seguindo as recomendações Mozilla Intermediate:
# /etc/nginx/sites-available/seudominio.com.br
server {
listen 80;
server_name seudominio.com.br www.seudominio.com.br;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl;
http2 on;
server_name seudominio.com.br www.seudominio.com.br;
ssl_certificate /etc/letsencrypt/live/seudominio.com.br/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/seudominio.com.br/privkey.pem;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384;
ssl_prefer_server_ciphers off;
ssl_session_timeout 1d;
ssl_session_cache shared:SSL:10m;
ssl_session_tickets off;
ssl_stapling on;
ssl_stapling_verify on;
location / {
proxy_pass http://app:3000;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-Proto $scheme;
}
}Certificado wildcard com Cloudflare DNS
Wildcard cobre todos os subdomínios e exige desafio DNS-01:
# Instalar plugin Cloudflare
apt install python3-certbot-dns-cloudflare
# Criar credenciais
cat > /etc/letsencrypt/cloudflare/credentials.ini << 'EOF'
dns_cloudflare_api_token = SEU_TOKEN_AQUI
EOF
chmod 600 /etc/letsencrypt/cloudflare/credentials.ini
# Obter certificado wildcard
certbot certonly \
--dns-cloudflare \
--dns-cloudflare-credentials /etc/letsencrypt/cloudflare/credentials.ini \
-d seudominio.com.br \
-d "*.seudominio.com.br"Renovação automática e monitoramento
Verifique que a renovação automática está configurada e funcionando:
# Ver timer de renovação (systemd)
systemctl status snap.certbot.renew.timer
# Testar renovação sem aplicar
certbot renew --dry-run
# Ver data de expiração
certbot certificates
# ou
openssl x509 -in /etc/letsencrypt/live/seudominio.com.br/fullchain.pem -noout -dates
# Verificar SSL externamente
curl -I https://seudominio.com.br | grep -i "strict-transport"SSL com Certbot em stack Docker
Gerencie certificados para containers com o padrão Nginx + Certbot via Compose:
services:
nginx:
image: nginx:alpine
ports: ["80:80", "443:443"]
volumes:
- ./nginx/conf.d:/etc/nginx/conf.d:ro
- certbot_conf:/etc/letsencrypt
- certbot_www:/var/www/certbot
certbot:
image: certbot/certbot
volumes:
- certbot_conf:/etc/letsencrypt
- certbot_www:/var/www/certbot
entrypoint: "/bin/sh -c 'trap exit TERM; while :; do certbot renew; sleep 12h & wait $${!}; done;'"
volumes:
certbot_conf:
certbot_www:$ runstack deploy --plan starter
Não quer configurar manualmente?
Não quer configurar manualmente? Implante o VPS em menos de 3 minutos com a Runstack. Infraestrutura da OPEN DATACENTER, com servidores no Brasil.