Skip to content

Pluggable ServerCA / RA mode for external per-SVID signing #6711

@drewterry

Description

@drewterry

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions