PKI interna con HashiCorp Vault: emisión automática de certificados

Diseño de una CA intermedia gestionada por Vault para emitir certificados x509 efímeros a servicios internos, con rotación automática y revocación trazable.

Cadena de confianza — emisión y rotación de certificados x509
Cadena de confianza — emisión y rotación de certificados x509

Por qué dejar de emitir certificados a mano

Las CAs internas gestionadas con OpenSSL y un README envejecen mal: claves privadas en pendrives, certificados emitidos por dos años porque rotarlos cuesta, expiraciones que tiran el servicio un viernes por la tarde. Una CA intermedia en Vault, firmada por una CA raíz offline, permite emitir certificados con TTL corto (24-72h) a través de una API autenticada — y el operador deja de ser el cuello de botella.

Roles, políticas y trazabilidad

Cada servicio recibe un AppRole con permisos para emitir certificados de un solo dominio interno y un TTL acotado. Vault registra cada emisión con metadata del solicitante; revocar es un endpoint, no una página de wiki. La CA raíz vive offline en un host air-gapped y sólo se activa para firmar la renovación anual de la intermedia.

# Configurar el rol de emisión
vault write pki_int/roles/web \
    allowed_domains="svc.internal" \
    allow_subdomains=true \
    max_ttl="72h"

# Emitir desde el servicio
vault write pki_int/issue/web \
    common_name="api.svc.internal" \
    ttl="24h"

Integración con el ciclo de vida del servicio

Un sidecar (consul-template, vault-agent) renueva el certificado al 60% de su vida útil y manda un SIGHUP al servicio para recargar TLS sin downtime. El servicio nunca persiste la clave privada en disco fuera de tmpfs. Resultado operativo: rotación silenciosa, ningún incidente por expiración y revocación inmediata si una clave se sospecha comprometida.