-
Notifications
You must be signed in to change notification settings - Fork 600
Pluggable ServerCA / RA mode for external per-SVID signing #6711
Description
FIPS 140-3 compliance (NIST 800-57, ISO 19790) requires CA signing keys to be generated inside validated cryptographic modules via witnessed ceremony and to never leave the module boundary. Currently SPIRE's architecture doesn't accommodate this, instead the UpstreamAuthority plugin handles getting the intermediate CA certificate signed, but the intermediate CA key still has to be available to SPIRE at runtime for SVID signing.
Organizations with existing PKI infrastructure (Venafi, Keyfactor, EJBCA, etc.) already have FIPS-validated signing services with ceremony-established keys. SPIRE should be able to delegate per-SVID signing to those services rather than holding a signing key itself.
Proposal
An extension point that allows SPIRE to delegate individual SVID signing to an external service:
- Per-SVID mode for UpstreamAuthority — extend UpstreamAuthority so it can be invoked per-SVID rather than only per-CA-rotation.
- ServerCA as a plugin type — a gRPC plugin interface alongside KeyManager and UpstreamAuthority. Implementations would receive signing requests and return signed certificates, calling external CAs (Venafi, EJBCA, cert-manager, etc.).
There are real tradeoffs (signing latency, availability dependency on the external CA, throughput limits), but the current architecture forces a choice between FIPS compliance and using SPIRE.
Related
#4482 — Custom ServerCA
#525 — ServerCA HSM plugin
#2238 — Define SPIRE Server's CA explicitly