Renovar los certificados de Let’s Encrypt utilizando un Temporizador systemd

Hasta hace poco, para renovar los certificados de Let’s Encrypt utilizaba un cronjob configurado de la siguiente manera:

 

##### CertBot

29 2 15,28 * * /usr/bin/systemctl stop httpd

30 2 15,28 * * /usr/bin/certbot renew

35 2 15,28 * * /usr/bin/systemctl start httpd

 

Cada día 15 y 28 de cada mes, iniciando a las 2:29am paraba el servidor Web, ejecutaba el comando para renovar los certificados y volvía a iniciar el servidor Web.

 

Hoy, mientras estaba instalando el programa certbot desde los repositorios de Rocky Linux 9, me he fijado en esto:

 

Certbot tiene un servicio/Temporizador que se puede activar para que los certificados se renueven de manera automática sin tener que utilizar script o CronJob. Si miramos el contenido del archivo:

 

nano /usr/lib/systemd/system/certbot-renew.timer

 

[Unit]

Description=This is the timer to set the schedule for automated renewals

 

[Timer]

OnCalendar=*-*-* 00/12:00:00

RandomizedDelaySec=12hours

Persistent=true

 

[Install]

WantedBy=timers.target

 

Los parámetros importantes son los contenidos en el segundo bloque; con el primero se indica que el comando contenido en el archivo que vamos a ver a seguir, se ejecutará a la medianoche y al mediodía de cada día y que se introducirá, segundo parámetro, un retraso de hasta 12 horas, esto quiere decir que el comando se ejecutará en cualquier momento entre la medianoche y las 11:59am y el mediodía y las 11:59pm. Siguiendo con el segundo archivo:

 

nano /usr/lib/systemd/system/certbot-renew.service

 

[Unit]

Description=This service automatically renews any certbot certificates found

 

[Service]

EnvironmentFile=/etc/sysconfig/certbot

Type=oneshot

ExecStart=/usr/bin/certbot renew --noninteractive --no-random-sleep-on-renew $PRE_HOOK $POST_HOOK $RENEW_HOOK $DEPLOY_HOOK $CERTBOT_ARGS

 

se indica que el archivo que contendrá las variables utilizadas por el comando certbot renew es /etc/sysconfig/certbot que a su vez contiene los siguientes parámetros:

 

PRE_HOOK=""

POST_HOOK=""

DEPLOY_HOOK=""

CERTBOT_ARGS=""

 

cuyo significado es, respectivamente:

 

  • comando a ejecutar antes de renovar los certificados, ejemplo, parar el servidor Web

  • comando a ejecutar después de renovar los certificados, ejemplo reiniciar el servidor web

  • comando a ejecutar para cada certificado renovado, ejemplo uno script que envía un correo notificando que el certificado se ha renovado

  • cualquier parámetro adicional se quiera añadir al comando certbot renew entre los permitidos

 

En nuestro caso lo dejamos así:

 

PRE_HOOK="usr/bin/systemctl stop httpd"

POST_HOOK="usr/bin/systemctl start httpd"

DEPLOY_HOOK=""

CERTBOT_ARGS=""

 

Luego para iniciar el servicio y que se inicie en automático cada vez que se reinicie el servidor:

 

systemctl enable certbot-renew.timer

 

systemctl start certbot-renew.timer

 

systemctl status certbot-renew.timer

certbot-renew.timer - This is the timer to set the schedule for automated renewals

Loaded: loaded (/usr/lib/systemd/system/certbot-renew.timer; enabled; preset: enabled)

Active: active (waiting) since Wed 2024-11-13 08:22:59 -05; 3s ago

Until: Wed 2024-11-13 08:22:59 -05; 3s ago

Trigger: Wed 2024-11-13 14:37:32 -05; 6h left

Triggers: â certbot-renew.servic

 

Vota el Articulo: 

Sin votos (todavía)
Evalúa la calidad del articulo
Suscribirse a Comentarios de "Renovar los certificados de Let’s Encrypt utilizando un Temporizador systemd" Suscribirse a VozToVoice - Todos los comentarios