* Allows the ceremony tool to add the `onlyContainsCACerts` flag to the
`IssuingDistributionPoint` extension[1] for CRLs.
* Add a lint to detect basic usage of this new flag.
* Add a helper function which doesn't (yet) exist in golang
x/crypto/cryptobyte named `ReadOptionalASN1BooleanWithTag` which
searches for an optional DER-encoded ASN.1 element tagged with a given
tag e.g. onlyContainsUserCerts and reports values back to the caller.
* Each revoked certificate in the CRL config is checked for is `IsCA` to
maintain conformance with RFC 5280 Section 6.3.3 b.2.iii [2].
> (iii) If the onlyContainsCACerts boolean is asserted in the
> IDP CRL extension, verify that the certificate
> includes the basic constraints extension with the cA
> boolean asserted.
Fixes https://github.com/letsencrypt/boulder/issues/7047
1. https://datatracker.ietf.org/doc/html/rfc5280#section-5.2.5
2. https://datatracker.ietf.org/doc/html/rfc5280#section-6.3.3
|
||
|---|---|---|
| .. | ||
| README.md | ||
| helpers.go | ||
README.md
Test Lint CRLs
The contents of this directory are a variety of PEM-encoded CRLs uses to test the CRL linting functions in the parent directory.
To create a new test CRL to exercise a new lint:
-
Install the
der2textandtext2dertools:$ go install github.com/syncsynchalt/der2text/cmds/text2der@latest $ go install github.com/syncsynchalt/der2text/cmds/der2text@latest -
Use
der2textto create an editable version of CRL you want to start with, usuallycrl_good.pem:$ der2text crl_good.pem > my_new_crl.txt -
Edit the text file. See the der2text readme for details about the file format.
-
Write the new PEM file and run the tests to see if it works! Repeat steps 3 and 4 as necessary until you get the correct result.
$ text2der my_new_crl.txt >| my_new_crl.pem $ go test .. -
Remove the text file and commit your new CRL.
$ rm my_new_crl.txt $ git add .