MyOwnPKI documentation Source on GitHub

Revocation

A certificate is valid until notAfter. Sometimes it has to stop earlier: the private key leaked, the host was retired, the certificate was issued by mistake. Revocation is how a CA announces that. It is also the weakest part of the system, because the client has to ask, and many do not.

Two mechanisms

  CRL (certificate revocation list) OCSP (online certificate status protocol)
Defined in RFC 5280 RFC 6960
What it is A signed file with the serial numbers of all revoked, not yet expired certificates of one CA A signed answer for one certificate: good, revoked or unknown
Client behavior Downloads the file, caches it until nextUpdate Asks a responder, or the server staples a recent answer
Cost Grows with the number of revoked certificates One request per check, and the responder sees which site you visit

A certificate says where to find each: the CRL distribution points extension holds the CRL address, and the authority information access extension may hold an OCSP responder address.

What MyOwnPKI serves

CRLs only. There is no OCSP responder in this release (it is planned for after v1.0), and the certificates carry no OCSP address. The ocsp preset exists to make the signing certificate of an OCSP responder; it does not mean the server answers OCSP requests.

Look at what a certificate points to, and at the CRL itself:

openssl x509 -in www.homelab.lan.pem -noout -ext crlDistributionPoints
curl -s -o issuing.crl http://pki.homelab.lan/crl/issuing/1.crl
openssl crl -inform DER -in issuing.crl -noout -text

Revoking in MyOwnPKI

A revocation is final. There is no “certificate hold” that can be lifted, because the CA/Browser Forum bans it for public certificates. The reasons offered are RFC 5280 reasons: unspecified, keyCompromise, affiliationChanged, superseded, cessationOfOperation and privilegeWithdrawn, and for a CA also cACompromise. Revoking in the UI needs a fresh second factor.

With keyCompromise (or cACompromise) the key is also blocked: the engine refuses it in every later request, so a stolen key cannot come back in a new CSR. A client of the ACME server can revoke with certbot revoke or lego certificates revoke, and the certificate’s own key can revoke it too.

A root cannot be revoked

Revocation is announced by the CA above. A root has none, and clients hold it because you installed it. MyOwnPKI refuses to revoke a root and tells you to remove it from the trust stores and retire it. An intermediate below an online parent is revoked by that parent; one below an offline root is revoked on the root machine and the new root CRL is uploaded.

Short lifetimes often beat revocation

Revocation only helps when the client checks and the check can reach the list. Short lifetimes work without either. A certificate that lives 90 days is a smaller risk after a leak than one that lives 397 days, whatever the client does. The CA/Browser Forum is shortening the lifetime of public certificates for the same reason (200, 100 and then 47 days, ballot SC-081); this does not bind a private CA, but automation with ACME or the agent makes short lifetimes cheap. See Lifetimes and renewal.

What clients do

General knowledge, and it varies by client and version:

Treat revocation as a way to record and publish a decision, and a short lifetime as the protection.

Next steps