Enviado por admin el
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
Comentarios recientes