quarta-feira, 3 de junho de 2020

Renovando certificado let's encrypt Standalone no FreeBSD


Esses dias tive que dar manutenção em um certificado SSL let's encrypt que estava prestes à expirar e não havia uma política ou cron de renovação configurada. Após alguma pesquisa, consegui renovar com os seguintes passos:

OBS: Parti do pressuposto que o certificado let's encrypt já existe no servidor e já está configurado.

1 - Primeiro configurei para usar comandos de pre_hook e post_hook dentro do arquivo de renovação do certificado:

Pre_hook: Pode ser executado comandos ou tarefas antes de iniciar a tentativa de renovação do certificado.

Post_hook: Pode ser executado comandos ou tarefas depois da tentativa de renovação do certificado.

Local do arquivo: /usr/local/etc/letsencrypt/renewal/drive.com.br.conf

# renew_before_expiry = 30 days
version = 1.0.0
archive_dir = /usr/local/etc/letsencrypt/archive/drive.com.br
cert = /usr/local/etc/letsencrypt/live/drive.com.br/cert.pem
privkey = /usr/local/etc/letsencrypt/live/drive.com.br/privkey.pem
chain = /usr/local/etc/letsencrypt/live/drive.com.br/chain.pem
fullchain = /usr/local/etc/letsencrypt/live/drive.com.br/fullchain.pem

# Options used in the renewal process
[renewalparams]
pre_hook= service apache24 stop
post_hook= service apache24 start
account = 010867c9b7ebd1a1a0db9a49204eda24
authenticator = standalone
server = https://acme-v02.api.letsencrypt.org/directory

Como podemos ver, inseri um comando de parada do apache antes de executar a renovação e após a renovação, inicia novamente o serviço.

2 - Agora com o arquivo configurado, executei o teste de renovação para ver se não haveria problemas:

# certbot renew --dry-run
Saving debug log to /var/log/letsencrypt/letsencrypt.log

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Processing /usr/local/etc/letsencrypt/renewal/drive.com.br.conf
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Cert not due for renewal, but simulating renewal for dry run
Plugins selected: Authenticator standalone, Installer None
Running pre-hook command: service apache24 stop
Output from pre-hook command service:
Stopping apache24.
Waiting for PIDS: 39217.

Renewing an existing certificate
Performing the following challenges:
http-01 challenge for drive.com.br
Waiting for verification...
Cleaning up challenges

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
new certificate deployed without reload, fullchain is
/usr/local/etc/letsencrypt/live/drive.com.br/fullchain.pem
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
** DRY RUN: simulating 'certbot renew' close to cert expiry
**          (The test certificates below have not been saved.)

Congratulations, all renewals succeeded. The following certs have been renewed:
  /usr/local/etc/letsencrypt/live/drive.com.br/fullchain.pem (success)
** DRY RUN: simulating 'certbot renew' close to cert expiry
**          (The test certificates above have not been saved.)
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Running post-hook command: service apache24 start
Output from post-hook command service:
Performing sanity check on apache24 configuration:
Starting apache24.
Syntax OK


Como podemos ver acima, a renovação do certificado ocorreu após o serviço do apache parar, depois que houve o sucesso, o serviço foi inicializado novamente.

3 - Com o nosso teste funcionando corretamente, vamos inserir na cron do servidor a execução de renovação do certificado:

Vamos inserir no final do arquivo "/etc/crontab" o seguinte:

0       1    *       *       *       /usr/local/bin/certbot renew

Após inserir os valores acima, nossa renovação de certificado será verificada todos os dias à 1h da manhã, e executará com duas condições

 - Se executar antes de 30 dias de prazo de expiração, não renovará nada e dará skip na tentativa;
 - Se executar com 30 dias de prazo de expiração ou menos, executará a renovação do certificado.

Por hoje é só have a nice day =D


Mais informações: https://letsencrypt.org/pt-br/

Nenhum comentário:

Postar um comentário