Allow dedicated Redis for OCSP publication
CI / Build and push docker image (push) Successful in 2m38s
CI / Build and push OCSP image (push) Successful in 3m47s

This commit is contained in:
woggioni committed 2026-10-31 20:26:37 +00:00
1 parent ef64c4a532
commit a101182fdd
10 files changed
+93 -33

No files matched your search

+9 -6
View File
@@ -6,16 +6,17 @@ OCSP responses with a delegated responder certificate.
It has **no KCA database access** and no KCA master key. It only needs:
- read access to OCSP keys in the same Redis instance and logical database KCA
uses for sessions;
- read access to OCSP keys in the Redis instance selected by KCA (the session
Redis by default, or a dedicated instance when `KCA_OCSP_REDIS_URL` is set);
- the CA certificate and its KCA CA UUID for each issuer;
- a delegated OCSP signer certificate and private key for each CA. The
responder currently accepts RSA-SHA256 and ECDSA P-256 signers in PKCS#8,
PKCS#1 RSA, or SEC1 EC PEM form.
Where Redis ACLs are available, restrict the responder's credentials to the
OCSP prefix so it cannot read session entries. KCA needs access to both
`ocsp:*` and `kaya:session:*`.
OCSP prefix so it cannot read session entries. When sharing an instance, KCA
needs access to both `ocsp:*` and `kaya:session:*`; a dedicated OCSP instance
can use separate credentials.
## Snapshot layout
@@ -30,7 +31,8 @@ its CA certificate row in KCA. This isolates snapshots when the same public CA
certificate exists in multiple vaults. The responder validates both this ID and
the CA certificate fingerprint against every downloaded snapshot.
KCA publishes these keys when `REDIS_URL` is configured. The
KCA publishes these keys when either `REDIS_URL` or `KCA_OCSP_REDIS_URL` is
configured, preferring the dedicated OCSP URL when both are present. The
`kca-ocsp-status/v2` payload is encoded with CBOR and contains all certificates
issued by that CA, both valid and revoked, without a generation timestamp.
Freshness is carried by the Redis key TTL. The responder never infers status
@@ -41,7 +43,8 @@ coordinated because legacy JSON payloads are rejected until republished.
1. Create a config based on `responder.example.yaml`, setting each issuer's
`ca_id` to its CA certificate UUID in KCA.
2. Set `redis.url` or `OCSP_REDIS_URL` to the same Redis URL used by KCA.
2. Set `redis.url` or `OCSP_REDIS_URL` to the OCSP Redis URL used by KCA (the
session `REDIS_URL` unless `KCA_OCSP_REDIS_URL` overrides it).
3. Put your CA certificates and delegated signer files where the config points.
4. Make the signer key readable by the container user (`65532:65532` in the
published scratch image), or mount it via a Docker secret.