mTLS with Static Certs vs. SVIDs
Static certs (Phase 2, toy-pki):
let server_config = ServerConfig::builder()
.with_client_cert_verifier(verifier)
.with_single_cert(cert_chain, private_key)?;
SVIDs (today) — the key difference is hot rotation:
let source = Arc::new(X509Source::default().await?);
let server_config = build_server_config_from_source(&source)?;
The identity is the same X.509 cert → mTLS handshake works identically.
The difference is lifecycle: SVIDs rotate without server restart.