Renovando Certificado Digital Letsencrypt
Comandos certbot
Adotando que estamos no ambiente linux UBUNTU.
Criar Certificados
Sabendo que temos:
- domínio raiz (
dominio.com.br) - subdomínios (
www.dominio.com.br,api.dominio.com.br)-
# Cria certificado totalmente separado
sudo certbot --nginx -d dominio.com.br
sudo certbot --nginx -d www.dominio.com.br
Se os domínios estiverem no mesmo server block do nginx, o certbot irá criar apenas um certificado atendendo os dois.
Para se ter certificados separados, precisamos ter server block no nginx separados.
Então, no exemplo acima se o nginx tiver algo como:
server {
listen 80;
listen 443 ssl;
server_name dominio.com.br www.dominio.com.br;
ssl_certificate /etc/letsencrypt/live/dominio.com.br/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/dominio.com.br/privkey.pem;
...
}
Esse certificado pode conter 1 ou vários domínios (SAN), mas continua sendo apenas um certificado.
Para termos certificados TOTALMENTE SEPARADOS (na grande maioria se junta dominio + www), mas caso queira, temos que ter os block server no nginx separados:
# domínio raiz
server {
listen 80;
listen 443 ssl;
server_name dominio.com.br;
ssl_certificate /etc/letsencrypt/live/dominio.com.br/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/dominio.com.br/privkey.pem;
...
}
# www separado (pode até só redirecionar)
server {
listen 80;
listen 443 ssl;
server_name www.dominio.com.br;
ssl_certificate /etc/letsencrypt/live/www.dominio.com.br/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/www.dominio.com.br/privkey.pem;
return 301 https://dominio.com.br$request_uri;
}
Aí podemos criar um certificado separado para um subdomínio
sudo certbot --nginx -d api.dominio.com.br
sudo certbot --nginx -d crm.dominio.com.br
Assim, cada certificado fica com apenas 1 domínio, e você controla tudo de forma isolada.
Listar certificados no servidor
O comando abaixo irá listar todos os certificados do servidor.
sudo certbot certificates
Deletar Certificados
sudo certbot delete --cert-name dominio.com.br
# Se tiver certificado separado
sudo certbot delete --cert-name api.dominio.com.br
Renovar os certificados
sudo certbot renew --cert-name <dominio>
sudo certbot renew --cert-name dominio.com.br
Para renovar todos os certificados, basta executar o comando:
sudo certbot renew
Se quiser apenas testar sem aplicar de verdade:
sudo certbot renew --dry-run
Para testar sem renovar de verdade
sudo certbot renew --cert-name <dominio> --dry-run
sudo certbot renew --cert-name dominio.com.br --dry-run
Criar renovação automática pelo crontab
sudo nano /usr/local/bin/renova-certificados.sh
renova-certificados.sh
#!/bin/bash
# Renova apenas os certificados desejados
certbot renew --cert-name dominio.com.br
certbot renew --cert-name outrodominio.com.br
sudo chmod +x /usr/local/bin/renova-certificados.sh
Agora, basta criar o agendamento:
sudo crontab -e
Adicionar a linha no crontab
0 3 * * * /usr/local/bin/renova-certificados.sh >> /var/log/renova-certificados.log 2>&1
Isso significa:
- Minuto:
0→ começa no minuto 0 - Hora:
3→ às 03:00 da manhã - Dia do mês:
*→ todos os dias - Mês:
*→ todos os meses - Dia da semana:
*→ todos os dias da semana