CA Renewal with a new key in EJBCA #256
-
Hello, I would like to understand how Certificate Revocation Lists (CRLs) and the certificates of end entities are verified when the keys and certificates of the issuing Certificate Authority (CA) are renewed in EJBCA. Suppose I have the following setup:
When I renew the CA on EJBCA without re-generating its key, everything continues to operate smoothly and certificates are validated correctly with no problems. When I re-generate the CA keys, I experience problems when validating certificates issued with the old CA key against newly generated CRLs (signed with the new keys). How this (rekey of CA) is usually handled in EJBCA ? Can I maintain two separate CRLs, one with the updated keys and one with the original keys ? Thank you. |
Beta Was this translation helpful? Give feedback.
Replies: 2 comments 2 replies
-
CA renewal with re-key and CRLs is a tricky topic. Because of that the most common practice is to create a new CA instead of re-key an existing CA. That's why public Cas typically have "G2" (generation), "G3", etc. Avoids that complexity. The default behavior of EJBCA is to only generate CRLs using the current CA signing key. If end entities does not have the new CA key, they can not verify that CRL naturally. |
Beta Was this translation helpful? Give feedback.
-
OpenSSL error messages are always hard to understand what it means. Isn't it that the EE cert can't be verified by NEW_CA.pem? You probably need both CA certificates in this use case in order to verify both the CRL and the EE certificate. OCSP can for sure be used, the client need to use KeyID instead of NameID in OCSP though, or also have the new CA certificate to verify OCSP responses signed by the new CA certificate. Similar on that case, the client need both the old and the new CA certificate. Imho, the administrative burden for CA rekey is typically larger than creating a new CA, due to the inherent complexities. :-). |
Beta Was this translation helpful? Give feedback.
CA renewal with re-key and CRLs is a tricky topic. Because of that the most common practice is to create a new CA instead of re-key an existing CA. That's why public Cas typically have "G2" (generation), "G3", etc. Avoids that complexity.
The default behavior of EJBCA is to only generate CRLs using the current CA signing key. If end entities does not have the new CA key, they can not verify that CRL naturally.
See "Microsoft CA compatibility mode" for information how to create multiple CRLs with current and old keys.
https://doc.primekey.com/ejbca/ejbca-operations/ejbca-ca-concept-guide/certificate-authority-overview/microsoft-compatible-ca-key-updates