unsigned: implement RFC 9925 - #8901
Conversation
unsigned.Design removes the signature from an x509.Certificate and optionally replaces the signature algorithm with id-alg-unsigned (which makes it a true RFC 9925 unsigned certificate). This is useful for (a) generating MTC CA certificates and (b) reducing the size of lint certs that we store in the database. We don't want to replace the signature algorithm when storing lint certs, because we will later verify that all fields of a CA-signed precertificate match all fields of a lint final certificate, and swapping out signature algorithm would cause that check to break. These certificates can be parsed with `x509.ParseCertificate`, but of course they can't be verified.
beautifulentropy
left a comment
There was a problem hiding this comment.
Looks good to me, just a couple nits.
ezekiel
left a comment
There was a problem hiding this comment.
This looks good - I'd go with more aggressive camel-casing in the exported .DeSign() and the feature bool UnSignLintCerts to make it clearer, but this is great as-is.
a63053a
|
@jsha, this PR appears to contain configuration and/or SQL schema changes. Please ensure that a corresponding deployment ticket has been filed with the new values. |
|
@jsha, this PR adds one or more new feature flags: UnsignLintCerts. As such, this PR must be accompanied by a review of the Let's Encrypt CP/CPS to ensure that our behavior both before and after this flag is flipped is compliant with that document. Please conduct such a review, then add your findings to the PR description in a paragraph beginning with "CPS Compliance Review:". |
unsigned.Design removes the signature from an x509.Certificate and optionally replaces the signature algorithm with id-alg-unsigned (which makes it a true RFC 9925 unsigned certificate).
This is useful for (a) generating MTC CA certificates and (b) reducing the size of lint certs that we store in the database.
We don't want to replace the signature algorithm when storing lint certs, because we will later verify that all fields of a CA-signed precertificate match all fields of a lint final certificate, and swapping out signature algorithm would cause that check to break.
These certificates can be parsed with
x509.ParseCertificate, but of course they can't be verified.IN-12945 tracks enabling the new flag in production.
CPS Compliance Review: these lint certs are untrusted and not subject to any compliance requirements.