Projectos Help

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

  1. 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.

  2. Tras renovación exitosa, el nuevo certificado se sube automáticamente a la ruta correspondiente en Vault.

  3. (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) y privkey.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

Agentes/ServiciosHashiCorp VaultAWS Route53Servidor de RenovaciónAgentes/ServiciosHashiCorp VaultAWS Route53Servidor de RenovaciónDesafío DNS (Certbot)DNS actualizado y propagadoCertificado renovado con CertbotSube nuevo certificado/llave como secretoConfirma almacenamiento exitoso[Futuro] Envía Webhook de notificación "¡Nuevo certificado disponible!"(A futuro) Obtienen y aplican nuevo certificado

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)

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.

26 June 2025