CodeGym /Cursos /Docker SELF /Gestión de certificados y configuración de actualización ...

Gestión de certificados y configuración de actualización automática

Docker SELF
Nivel 7 , Lección 4
Disponible

1. Verificar los certificados actuales

Comando certbot certificates

Empecemos con algo simple: ¿cómo saber qué certificados ya están instalados en tu servidor? Let's Encrypt ofrece una herramienta muy útil — certbot. Con el comando certbot certificates puedes obtener información detallada sobre los certificados actuales.

sudo certbot certificates

Como resultado, verás algo así:

Found the following certs:
  Certificate Name: example.com
    Domains: example.com www.example.com
    Expiry Date: 2023-12-31 10:00:00+00:00 (VALID: 89 days)
    Certificate Path: /etc/letsencrypt/live/example.com/fullchain.pem
    Private Key Path: /etc/letsencrypt/live/example.com/privkey.pem

Aquí se indican detalles importantes:

  • Nombre del certificado.
  • Dominios cubiertos por el certificado.
  • Fecha de vencimiento (para que puedas renovarlo a tiempo).
  • Ruta a los archivos del certificado y de la clave privada.

Un truco útil:

Si tienes el hábito de ignorar las notificaciones sobre fechas de vencimiento, este comando será tu mejor amigo. Nadie quiere ser ese programador que se entera del vencimiento de un certificado gracias a usuarios enfadados.


2. Actualización automática de certificados

Cómo funciona Let's Encrypt

Los certificados de Let's Encrypt tienen una validez de 90 días para minimizar riesgos de seguridad. Pero actualizarlos manualmente cada 3 meses no es opción. Por suerte, para la automatización se usa un comando integrado:

sudo certbot renew

Este proceso verifica todos los certificados y actualiza automáticamente los que están cerca de expirar.

Configuración de la actualización automática con Cron

Cron es una herramienta integrada para programar tareas en Linux. Ejecuta comandos según un horario, y eso es justo lo que necesitamos para automatizar la actualización de certificados. Así es como se configura Cron para la actualización:

  1. Abre el editor Cron para el usuario actual:

    sudo crontab -e
    
  2. Añade la siguiente línea al final del archivo:

    0 0 * * * certbot renew --quiet
    

    Este comando ejecuta certbot renew cada día a medianoche. El flag --quiet suprime la salida innecesaria, así que la actualización ocurrirá en silencio y sin molestar a nadie.

  3. Guarda los cambios y sal del editor.

Ahora tu servidor actualizará los certificados automáticamente, y no tendrás que preocuparte por la expiración (o al menos casi).


3. Actualización manual de certificados

A veces, la automatización no resuelve todos los problemas y toca actualizar los certificados manualmente. Por ejemplo, si acabas de añadir un nuevo dominio en la configuración del sitio, necesitas solicitar un nuevo certificado de forma manual. Aquí entra en juego certbot:

Ejemplo de comando:

sudo certbot renew

Actualizar el certificado para un dominio específico

Si necesitas actualizar el certificado asociado a un dominio en particular, se utiliza el siguiente formato de solicitud:

sudo certbot certonly --nginx -d example.com -d www.example.com

Aquí:

  • --nginx indica que la configuración se aplicará automáticamente al servidor Nginx. Para Apache se usa --apache.
  • Los flags -d enumeran los dominios para los que se necesita emitir un certificado.

Después de ejecutar el comando, Certbot comprobará la configuración del servidor, solicitará un nuevo certificado y lo configurará.


4. Notificaciones y monitoreo

Notificaciones por email

Al instalar Certbot, te pidió tu dirección de email. Si la proporcionaste, recibirás notificaciones 20 días antes de que expire el certificado. Si por alguna razón no diste tu email o quieres cambiarlo, puedes hacerlo así:

sudo certbot register --update-registration --email newaddress@example.com

Ahora, ninguna situación te tomará por sorpresa. Bueno, casi.

Verificación externa

Existen servicios de terceros que pueden ayudarte a monitorear la vigencia de tus certificados. Por ejemplo, SSL Labs. Simplemente introduce la dirección de tu sitio web y el servicio verificará su certificado, incluyendo la vigencia, la cadena de confianza y el nivel de seguridad.


5. Eliminación de certificados innecesarios

A veces los certificados antiguos se vuelven irrelevantes, por ejemplo, si dejaste de manejar algún dominio. Para no llenar el sistema de cosas inútiles, es mejor eliminarlos.

Comando para eliminar:

sudo certbot delete

Certbot mostrará una lista de certificados disponibles y sugerirá elegir cuál deseas eliminar.

Un consejo útil:

Ten cuidado al eliminar certificados para que no apagues accidentalmente un sitio en funcionamiento. Siempre verifica que el certificado ya no se esté usando en ningún lado.


6. Ejemplos y depuración de errores

Comprobación después de actualización

Después de cualquier cambio o actualización de certificados, siempre verifica que el sitio web funcione correctamente. La manera más sencilla de hacerlo es usando curl:

curl -I https://example.com

El resultado esperado es el código HTTP/1.1 200 OK.

Si algo sale mal, lo primero que debes hacer es revisar los logs:

  • Para Nginx:

      sudo tail -f /var/log/nginx/error.log
    
  • Para Apache:

      sudo tail -f /var/log/apache2/error.log
    

Error frecuente: "Too Many Requests"

Si solicitas nuevos certificados con demasiada frecuencia, Let's Encrypt puede bloquearte con el error "Too Many Requests". En tales casos, se recomienda usar el servidor de prueba de Let's Encrypt:

sudo certbot certonly --test-cert --nginx -d example.com

Este comando genera un certificado de prueba que no es válido para uso real, pero te ayudará a verificar la configuración.


7. Paso final: reinicio automático del servidor web

Let's Encrypt actualiza los archivos de certificados, pero los servidores web, como Nginx o Apache, no notan los cambios hasta que los reinicias. Esto también se puede automatizar. Actualiza el registro de Cron:

0 0 * * * certbot renew --quiet && systemctl reload nginx

O para Apache:

0 0 * * * certbot renew --quiet && systemctl reload apache2

Ahora, después de una actualización, cualquier certificado será aplicado al servidor inmediatamente.


Esta lección está diseñada para que puedas dormir tranquilo por las noches, sabiendo que tus certificados se actualizan automáticamente, tus sitios están protegidos y no recibirás una llamada de tu jefe a las tres de la mañana diciendo "Los usuarios se quejan de que el sitio no está disponible". La gestión de certificados es una habilidad importante que será útil en el trabajo real, especialmente si planeas trabajar en implementar aplicaciones web grandes o en ingeniería DevOps.

Comentarios
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION