Certificados
Objetivo
Describir el proceso automatizado para la renovación de certificados TLS/SSL mediante Certbot y validación DNS dinámica en AWS Route53, la actualización en HashiCorp Vault y el mecanismo futuro de notificación a los agentes mediante Webhook (paradigma push).
Resumen del Proceso
Un servidor dedicado, con acceso seguro a AWS Route53 y Vault, se encarga periódicamente de renovar los certificados de los dominios requeridos utilizando Certbot y validación DNS automatizada.
Tras renovación exitosa, el nuevo certificado se sube automáticamente a la ruta correspondiente en Vault.
(Próximamente) Se desencadenará un Webhook que notifique a los agentes/servicios relevantes sobre la existencia de una nueva versión de certificado (implementación push).
Descripción Paso a Paso
1. Servidor de Renovación
Servidor independiente, aislado y con permisos mínimos necesarios para:
Actualizar registros DNS en Route53.
Acceder y subir secretos a HashiCorp Vault.
Mantiene scripts y credenciales/roles configurados para automatizar el proceso (AWS CLI y token Vault).
2. Renovación con Certbot y Route53
Certbot es ejecutado cada 90 días mediante cron o job equivalente.
La validación del dominio se realiza por DNS challenge utilizando las credenciales de Route53.
Certbot requiere el plugin
certbot-dns-route53.Ejemplo de comando:
certbot certonly \ --dns-route53 \ --dns-route53-propagation-seconds 30 \ -d midominio.com -d www.midominio.com \ --config-dir /etc/letsencrypt \ --work-dir /var/lib/letsencrypt \ --logs-dir /var/log/letsencrypt \ --non-interactive --agree-tos --email admin@midominio.com
La política de IAM asociada debe restringirse solo a las zonas/dominios a gestionar.
3. Carga Automática en Vault
Tras cada emisión o renovación, un script monitoriza
/etc/letsencrypt/live/<dominio>/por cambios o se ejecuta como hook post-renovación.El script obtiene los archivos
fullchain.pem(certificado + cadena) yprivkey.pem(llave privada).Los sube al Vault, actualizando el secreto en la ruta acordada (
secret/certificados/<dominio>).#!/bin/bash VAULT_ADDR=https://vault.midominio.com VAULT_TOKEN=... DOMINIO=midominio.com CERT=$(cat /etc/letsencrypt/live/$DOMINIO/fullchain.pem) KEY=$(cat /etc/letsencrypt/live/$DOMINIO/privkey.pem) vault kv put secret/certificados/$DOMINIO \ certificate="$CERT" \ private_key="$KEY"El acceso a Vault debe ser seguro (token con política mínima necesaria).
4. Registro y Auditoría
Todas las operaciones se registrarán en logs locales y en Vault audit logs para trazabilidad.
5. Futuro: Webhook de Notificación (Push a Agentes)
Próximamente, tras actualizar el certificado en Vault, el servidor de renovación llamará a un Webhook (HTTP POST a los agentes/suscriptores) notificando que existe una versión nueva.
Cada agente podrá entonces iniciar el proceso de descarga/despliegue local inmediato según corresponda.
Este mecanismo permite pasar de una arquitectura pull (agentes consultan periódicamente) a una push (notificación inmediata al haber actualización).
Esquema del Proceso
Comparación de Opciones para la Gestión de Certificados TLS/SSL
Solución | Proveedor | Emisión y Renovación | Automatización | Costo | Compatibilidad/Portabilidad | Control sobre Certificado | Integración Multicloud/On-Prem | Consideraciones y Limitaciones |
|---|---|---|---|---|---|---|---|---|
Let's Encrypt | ACME | Gratuita, automática (90 días) | Alta (ACME estándar) | Gratis | Altísima (vendor agnostic) | Total (descarga claves) | Sí | Límite de solicitudes; requiere automatizar renovación y despliegue |
Cloudflare SSL for SaaS | Cloudflare | Gestionada por proveedor | Transparente | Incluido en planes CDN/seguridad | Media (atado a Cloudflare) | Parcial (no siempre acceso a clave privada) | No (necesita usar Cloudflare como proxy) | Depende de la infraestructura Cloudflare; no se lleva el certificado fuera de la red de Cloudflare |
Azure App Service/Key Vault | Microsoft | Facilitada por Azure | Muy alta | Varía según servicio | Alta para recursos Azure, limitada fuera | Sí (Key Vault); Parcial (App Service) | Parcial (nativo en Azure, integración externa posible) | Fácil integración en Azure; más esfuerzo para otros entornos |
AWS Certificate Manager (ACM) | AWS | Gestionada por ACM | Muy alta | Incluido en AWS | Alta para AWS, nulo fuera | Muy limitada (no acceso a claves privadas de certificados emitidos por ACM) | Parcial (no se puede exportar privados ACM) | Solo para uso interno de AWS; no portable para on-premises o multicloud |
Compra de Certificado Externo (CA Comercial) | Ej: DigiCert, Sectigo, GlobalSign | Proceso manual o automatizado según CA | Variable (según CA y herramientas) | Pago (usualmente anual) | Altísima (cualquier plataforma admite) | Total (tienes clave y certificado) | Sí, sin restricciones | Tiempos de emisión variables; puede requerir gestión manual de renovación |
Observaciones
Let's Encrypt es la alternativa más versátil, automatizable y sin costo, ideal para arquitecturas distribuidas y multicloud.
Cloudflare simplifica la gestión para entornos 100% bajo su red, pero limita la portabilidad y el control sobre las claves privadas.
Azure y AWS ofrecen excelente automatización y manejo en sus respectivos ecosistemas, pero presentan limitaciones fuera de sus plataformas.
Certificados Comerciales ofrecen la máxima portabilidad y aceptación, pero pueden ser costosos y menos flexibles en la renovación automática; sin embargo, permiten cumplimiento para sectores altamente regulados donde las CA públicas/gratuitas aún no son aceptadas.
Requisitos y Consideraciones de Seguridad
El servidor de renovación debe operar en entorno controlado y auditable.
Las credenciales de AWS y Vault deben tener el menor privilegio posible.
Rotar y monitorear el acceso a Vault y AWS de manera periódica.
Validar logs y alertar sobre cualquier anomalía en el flujo.
Referencias
Consideraciones Finales
El proceso garantiza la disponibilidad y vigencia de los certificados TLS sin intervención manual.
El almacenamiento centralizado y seguro en Vault simplifica la distribución y el acceso para los servicios que dependen de los certificados.
La futura integración del Webhook optimizará aún más los tiempos de reacción y el ciclo de despliegue de certificados.