Voltar para a página Como utilizar Https
Configurar a Renovação Automática do Certificado SSL Let's Encrypt
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
Crie um arquivo de Let's Encrypt
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 = [email protected] # 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.
Criação de um script de renovação
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).
Conclusão
É 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