Renovar automáticamente los certificados Let's Encrypt en Ubuntu (Certbot + Nginx)

Una guía práctica de renovación automática de Certbot con un ejemplo de cron, enlaces previos y posteriores a Nginx, verificación de renovación y consejos para la resolución de problemas.

Los certificados Let’s Encrypt son válidos solo por 90 días, por lo que los sitios de producción siempre deben habilitar la renovación automática para evitar el tiempo de inactividad de HTTPS.

Si ya emitiste el certificado con Certbot, generalmente quedan dos cosas:

  1. Configurar una tarea de renovación programada
  2. Verifique que el flujo de trabajo de renovación realmente funcione

Primero, verifique si Certbot ya creó un programador

Dependiendo de su distribución, es posible que Certbot ya haya instalado un programador (por ejemplo, un systemd timer o /etc/cron.d/certbot).

Puedes consultar con:

1
systemctl list-timers | grep certbot

Si ya existe un temporizador válido, normalmente no necesitará una entrada adicional en el crontab.

Agregar un trabajo de Crontab manualmente (ejemplo recomendado)

Si prefiere administrar la renovación explícitamente, edite el crontab raíz:

1
sudo crontab -e

Agregue esta línea (se publica todos los días a las 03:00):

1
0 3 * * * certbot renew --pre-hook "systemctl stop nginx" --post-hook "systemctl start nginx" >> /tmp/certbot-renew.log 2>&1

Lo que significa:

  • 0 3 * * *: se ejecuta a las 03:00 todos los días
  • certbot renew: renueva los certificados que están próximos a caducar
  • --pre-hook: detiene Nginx antes de la renovación (común para el modo independiente)
  • --post-hook: inicia Nginx después de la renovación
  • >> /tmp/certbot-renew.log 2>&1: agregar registros para solucionar problemas

Ejecute una prueba en seco antes de confiar en Cron

Después de agregar la tarea, valide el flujo completo manualmente:

1
sudo certbot renew --dry-run

Si el ensayo tiene éxito, podrá confiar con seguridad en el trabajo programado.

Notas comunes

  1. Si utiliza el complemento webroot o nginx, a menudo no necesita detener Nginx. En muchas configuraciones, recargar Nginx después de la renovación es suficiente:
1
certbot renew --deploy-hook "systemctl reload nginx"
  1. certbot renew solo realiza una renovación real cerca del vencimiento, por lo que ejecutarla diariamente es normal.

  2. Para el mantenimiento a largo plazo, considere escribir registros en una ruta persistente como /var/log/letsencrypt/.

Resumen

La renovación automática de certificados confiable no consiste solo en escribir un comando. La clave es confirmar que el flujo de trabajo puede ejecutarse de un extremo a otro.

Una configuración estable suele consistir sólo en estos tres pasos:

  1. Verifique si la programación a nivel del sistema ya existe
  2. Agregue cron si es necesario y mantenga registros
  3. Valide una vez con --dry-run
记录并分享
Creado con Hugo
Tema Stack diseñado por Jimmy