Renovando Certificado Digital Letsencrypt

Comandos certbot

Adotando que estamos no ambiente linux UBUNTU.

Criar Certificados

Sabendo que temos:

# Cria certificado totalmente separado
sudo certbot --nginx -d dominio.com.br
sudo certbot --nginx -d www.dominio.com.br
atenção !!!

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>
exemplo

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
exemplo

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: