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:
Abre el editor
Cronpara el usuario actual:sudo crontab -eAñade la siguiente línea al final del archivo:
0 0 * * * certbot renew --quietEste comando ejecuta
certbot renewcada día a medianoche. El flag--quietsuprime la salida innecesaria, así que la actualización ocurrirá en silencio y sin molestar a nadie.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í:
--nginxindica que la configuración se aplicará automáticamente al servidor Nginx. Para Apache se usa--apache.- Los flags
-denumeran 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.logPara 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.
GO TO FULL VERSION