help:mentorweb:configurar_a_renovacao_automatica_do_certificado_ssl_let_s_encrypt

Voltar para a página Como utilizar Https

Os certificados gerados pelo Let's Encrypt tem validade de 30 (trinta) dias e desta forma é necessário que dentro deste período seja feita a renovação do certificado.
A renovação pode ser feita manualmente ou pode ser automatizada via shell script com agendamento no crontab.
Neste artigo será abordada a atualização via shellscript com agendamento no crontab.
Usaremos o plugin Standalone (já mencionado anteriormente), mas vamos configurá-lo para usar a porta 54531 para que não entre em conflito com HAProxy (que está escutando na porta 80 e 443).
Para fazer isso, usaremos o próximo comando, substituindo o seudominio.com.br pelos domínios registrados anteriormente.

$ sudo cd /opt/letsencrypt
$ sudo ./letsencrypt-auto certonly --agree-tos --renew-by-default --standalone-supported-challenges http-01 --http-01-port 54531 -d example.com -d www.example.com

Depois que tiver êxito, você precisará criar um novo arquivo de certificado combinado ( example.com pelo seu nome de domínio):

$ DOMAIN='example.com' sudo -E bash -c 'cat / etc/letsencrypt/live/$DOMAIN/fullchain.pem / etc/letsencrypt/live/$DOMAIN/privkey.pem > / etc/haproxy/certs/$DOMAIN.pem'

Em seguida, recarregue o HAProxy para começar a usar o novo certificado:

$ service haproxy reload

Antes de seguir em frente, vamos simplificar nosso processo de renovação criando um arquivo de configuração Let's Encrypt em /usr/local/ etc/le-renew-haproxy.in.

$ sudo cp /opt/letsencrypt/examples/cli.ini /usr/local/ etc/le-renew-haproxy.ini

Depois de criado o arquivo le-renew-haproxy.ini, abra-o para configuração:

$ sudo nano /usr/local/ etc/le-renew-haproxy.ini

Exemplo:

# This is an example of the kind of things you can do in a configuration file.
# All flags used by the client can be configured here. Run Certbot with
# "--help" to learn more about the available options.
 
# Use a 4096 bit RSA key instead of 2048
rsa-key-size = 4096
 
email = meu.email@edusoft.com.br
 
domains = exemplo.com.br, www.exemplo.com.br
 
# Uncomment and update to register with the specified e-mail address
# email = foo@example.com
 
# Uncomment and update to generate certificates for the specified
# domains.
# domains = example.com, www.example.com
 
# Uncomment to use a text interface instead of ncurses
# text = True
 
# Uncomment to use the standalone authenticator on port 443
# authenticator = standalone
# standalone-supported-challenges = tls-sni-01
standalone-supported-challenges = http-01
 
# Uncomment to use the webroot authenticator. Replace webroot-path with the
# path to the public_html / webroot folder being served by your web server.
# authenticator = webroot
# webroot-path = /usr/share/nginx/html

Agora, em vez de especificar os nomes de domínio no comando, podemos usar o arquivo de configuração Let's Encrypt para preencher os espaços em branco. Supondo que seu arquivo de configuração esteja correto, este comando pode ser usado para renovar seu certificado:

cd /opt/letsencrypt
./letsencrypt-auto certonly --renew-by-default --config /usr/local/ etc/le-renew-haproxy.ini --http-01-port 54531

Agora vamos criar um script que podemos usar para renovar nosso certificado.

Para automatizar o processo de renovação, usaremos um shellscript que verificará a data de expiração do certificado para o domínio fornecido e solicitará uma renovação quando a expiração for inferior a 30 dias.
Esse script será agendado para ser executado uma vez por semana. Desta forma, mesmo se um trabalho do cron falhar, há uma janela de 30 dias para tentar novamente todas as semanas.

Primeiro, baixe o script e copie-o para o endereço / usr / local/sbin/le-renew-haproxy do seu servidor Linux. Depois torne-o executável.
O script pode ser baixado clicando aqui Sinta-se livre para analisar o conteúdo do script antes de baixá-lo.
O script le-renew-haproxy considera le-renew-haproxy como nome de domínio cujo certificado você deseja verificar para renovação. Quando a renovação ainda não é necessária, ele simplesmente irá produzir quantos dias faltam até a expiração do certificado.
Se você executar o script agora, você será capaz de ver quantos dias faltam para o certificado expirar:

$ sudo le-renew-haproxy

Saída:

Verificando a data de validade de example.com ...
O certificado está atualizado, sem necessidade de renovação (restante 89 dias).

Em seguida, editaremos o crontab para criar um novo job que executará esse comando todas as semanas. Para editar o crontab execute:

$ sudo crontab -e

Inclua o seguinte conteúdo, tudo em uma linha:

30 2 * * 1 /usr/local/sbin/le-renew-haproxy >> /var/log/le-renewal.log

Salve e saia. Isso criará uma nova tarefa cron que executa o script le-renew-haproxy todas as segundas-feiras às 2:30 da manhã. A saída gerada pelo comando gravada em um arquivo de log /var/log/le-renewal.log. Saída:

Checking expiration date for exemplo.com.br...
The certificate is up to date, no need for renewal (89 days left).

É isso aí! Agora o HAProxy está usando um certificado digital SSL Let's Encrypt para garantir o tráfego HTTPS.
Voltar para a página Como utilizar Https

  • (edição externa)