Skip to content

Tolerate missing CRLs - #642

Merged
michalvasko merged 2 commits into
develfrom
crl-tolerate-missing
Sep 21, 2026
Merged

michalvasko merged 2 commits into
develfrom
crl-tolerate-missing

Conversation

@Roytak

@Roytak Roytak commented Sep 21, 2026

Copy link
Copy Markdown
Contributor

Refs #604 (comment)

Scenario Result
CRL published only by the intermediate (covers the leaves), root publishes none connect
same, but the client cert is revoked reject
both CRLs published, all certs valid connect
both CRLs published, intermediate CA revoked reject
CRL DPs unreachable connect (pre-existing fail-open)

Post-handshake CRL verification used X509_V_FLAG_CRL_CHECK_ALL alone,
which makes OpenSSL require a CRL for every certificate in the peer's
chain. Publishing a CRL is optional for a CA, so this rejected common
deployments, most notably an offline root CA that never publishes one
and intermediate certificates carrying no CRL distribution point at
all. Such a chain failed with "unable to get certificate CRL" as soon
as a single CRL was downloaded, while a chain with no CRLs at all was
accepted.

Keep checking the whole chain, but add a verification callback that
reports a certificate with no CRL available as unchecked instead of
failing the verification. Revocation is still enforced for every
certificate a CRL was obtained for. A peer certificate left unchecked
is warned about, a CA certificate is only logged verbosely, since
publishing a CRL is optional for a CA and such a warning would repeat
on every handshake. The MbedTLS backend already behaved this way, so
both backends now agree.

Refs #604
@michalvasko
michalvasko merged commit a88262e into devel Sep 21, 2026
11 checks passed
@michalvasko
michalvasko deleted the crl-tolerate-missing branch September 21, 2026 08:02
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants