Automatizar renovación de certificados SSL en un VPS
- ssl
- let's encrypt
- certbot
- renovación
- cron
- vps
- seguridad
- infraestructura
Riesgos de no automatizar la renovación de certificados SSL
Un certificado SSL caducado significa que tu web deja de ser segura, los navegadores muestran una advertencia y los usuarios no pueden acceder. Esto se traduce directamente en pérdida de clientes y problemas de SEO. Los certificados de Let’s Encrypt, que son gratuitos y muy comunes, caducan cada 90 días.
Renovarlos a mano cada tres meses es una tarea repetitiva que nadie quiere hacer y que es fácil olvidar. La solución es automatizar el proceso con Certbot y cron.
Certbot es la herramienta estándar para Let’s Encrypt
Certbot es el cliente oficial de Let’s Encrypt y simplifica enormemente la gestión de certificados. Se encarga de solicitar, instalar y, lo más importante, renovar tus certificados SSL. La instalación es sencilla en cualquier VPS con Linux.
En un servidor Ubuntu o Debian, el proceso es este:
sudo apt update
sudo apt install certbot python3-certbot-nginx # o python3-certbot-apache si usas Apache
Una vez instalado, puedes obtener tu certificado inicial. Por ejemplo, si usas Nginx para midominio.com y www.midominio.com:
sudo certbot --nginx -d midominio.com -d www.midominio.com
Este comando no solo obtiene el certificado, sino que también configura Nginx para usarlo y añade una redirección de HTTP a HTTPS.
La automatización de la renovación con Cron
Certbot incluye un comando renew que revisa los certificados instalados y los renueva si caducan en menos de 30 días. Este comando está diseñado para ser ejecutado regularmente por un planificador de tareas como cron. De hecho, al instalar Certbot, ya suele añadir un cron job o un systemd timer por defecto.
Puedes verificar si ya existe un cron job para Certbot en /etc/cron.d/certbot. Si no, puedes añadirlo tú mismo con sudo crontab -e:
0 0,12 * * * root python3 -c 'import random; import time; time.sleep(random.random() * 3600)' && certbot renew --quiet --nginx
Esta entrada ejecuta certbot renew dos veces al día, a las 00:00 y a las 12:00. El time.sleep añade un retardo aleatorio para evitar que todos los usuarios de Certbot golpeen los servidores de Let’s Encrypt al mismo tiempo. El flag --quiet suprime la salida si no hay errores. Para más detalles sobre cómo gestionar tareas programadas, tengo un artículo sobre errores comunes al usar cron jobs en un VPS.
Después de cada renovación exitosa, Certbot necesita que tu servidor web recargue su configuración para usar el nuevo certificado. El comando --nginx de Certbot suele hacer esto automáticamente. Si lo haces manualmente o usas un setup diferente (como Docker y Traefik), deberías añadir un hook al renew para recargar el servicio:
certbot renew --post-hook "systemctl reload nginx"
O, si tu web corre en Docker, un docker-compose restart web.
Verificación y monitorización de la renovación SSL
Una vez que la automatización está en marcha, verifica que funciona y que los certificados se renuevan correctamente. Puedes comprobar el estado de tus certificados en cualquier momento con:
sudo certbot certificates
Esto te mostrará la fecha de caducidad de cada uno. Además, configura un sistema de alertas. Un fallo en la renovación puede pasar desapercibido hasta que sea demasiado tarde. Mi regla es que cualquier proceso crítico en un VPS debe tener algún tipo de monitorización o alerta. Si quieres saber cómo implementar esto, te puede interesar el artículo sobre alertas de Telegram para tu servidor.
Ventajas y desventajas de automatizar la renovación SSL
Ventajas
- Fiabilidad: Los certificados se renuevan automáticamente, eliminando el riesgo de olvidos y el downtime asociado.
- Seguridad: Tu sitio siempre utiliza una conexión segura, protegiendo los datos de tus usuarios y manteniendo la confianza.
- Ahorro de tiempo: Libera tiempo de tareas repetitivas que puedes dedicar a algo más productivo en tu infraestructura.
Desventajas
- Configuración inicial: Requiere una configuración inicial correcta de Certbot y cron, que puede ser un reto si no estás familiarizado con la línea de comandos.
- Dependencia: Si Certbot o cron fallan por alguna razón (actualización rota, falta de espacio, etc.), la renovación puede fallar sin aviso si no tienes monitorización.
- Depuración: Si surge un problema, diagnosticarlo requiere conocimientos de logs y configuración del sistema.
La automatización de la renovación de certificados es un paso fundamental en la gestión de cualquier VPS. Si utilizas soluciones como Traefik para gestionar tus servicios y los certificados, el proceso es aún más sencillo porque Traefik integra la gestión de certificados de Let’s Encrypt directamente. Puedes explorar cómo Traefik maneja múltiples dominios y SSL automáticamente para simplificar aún más esta tarea. Y para setups con Docker, tengo una guía sobre cómo desplegar n8n en producción con Docker y Traefik, que incluye la configuración de certificados.
Técnico freelance especializado en desarrollo a medida, automatizaciones con IA y gestión técnica para negocios en España. Más sobre mí →
¿Necesitas que alguien se ocupe de tu web?
Me encargo de que tu web funcione, esté segura y actualizada. Backups, actualizaciones y soporte directo. Planes desde 49 €/mes.