You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
lib: add cert CRL distribution points ext. support.
This branch extends rcgen to allow generating certificates that contain
an RFC 5280 certificate revocation list (CRL) distribution points
extension. This is a useful mechanism for helping ensure CRL coverage
when performing revocation checks, and is newly supported by
rustls/webpki. See this upstream webpki issue[0] and RFC 5280
§4.2.1.13[1] for more background.
Using the new `crl_distribution_points` field of the `CertificateParams`
struct it's possible to encode one or more distribution points
specifying URI general names where up-to-date CRL information for the
certificate can be found.
Similar to existing rcgen CRL generation, the support for this extension
is not extensive, but instead tailored towards usage in the web PKI with
a RFC 5280 profile.
Notably this means:
* There's no support for specifying the 'reasons' flag - RFC 5280
"RECOMMENDS against segmenting CRLs by reason code".
* There's no support for specifying a 'cRLIssuer' in the DP - this is
specific to indirect CRLs, and neither rcgen's CRL generation code or
webpki's parsing/validation support these.
* There's no support for specifying a 'nameRelativeToCrlIssuer' in the
DP name instead of a sequence of general names for similar reasons as
above: 5280 says: "Conforming CAs SHOULD NOT use
nameRelativeToCRLIssuer to specify distribution point names."
* There's no support for specifying general names of type other than URI
within a DP name's full name. Other name types either don't make sense
in the context of this extension, or are rarely useful in practice
(e.g. directory name).
Test coverage is mixed based on the support of the relevant third party
libraries. OpenSSL and openssl-rs parse this extension well, and so the
`openssl.rs` test coverage is the most extensive. The `x509-parser`
crate can pull out the extension, but doesn't decompose the value (I may
attempt to land code for this upstream in the future, stay tuned).
Webpki recognizes this extension for use during revocation checking, but
doesn't expose it externally so a simple parse test is added. Botan's
rust bindings do not recognize the extension or offer a way to pull out
arbitrary extensions, so no test coverage is added there.
[0] rustls/webpki#121
[1] https://www.rfc-editor.org/rfc/rfc5280#section-4.2.1.13
0 commit comments