-
-
Notifications
You must be signed in to change notification settings - Fork 612
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add zlint lints based on our specific CP/CPS #5492
Comments
Do you need to fork ZLint for this? As a library user I think it should be possible to compose a |
Yeah, I'd prefer to do it without forking as well. In the period of time between coming up with this idea and filing this bug I took a very quick look at the zlint docs. The section on "Lint Sources" didn't mention bringing your own, nor did the section on "Extending Zlint", so I just assumed there weren't affordances for doing so. But I haven't looked any further than that. I'll definitely take a closer look when we actually try to implement this. |
Ooh, I wonder if we could actually store the lints in the CP/CPS repo itself, and then vendor that repo into boulder like any other dependency. That's probably too much of a pain from an automation / CI / ease-of-editing perspective but I kinda like the idea of guaranteeing they're in sync. |
Providing out-of-tree lints was a use-case I had in mind when I did the refactoring that allowed excluding categories of lints but I don't think it's been tried in practice (or captured in docs 😓). There might be some bumps in the road but I think it should be achievable 🤞 |
Turns out this is pretty straightforward. I've created a proof-of-concept PR above, adding the very first lints. Tests and additional lints will be forthcoming. |
Add a collection of custom lints to enforce that our issuance of Subscriber (via normal Boulder operation) and Root and Intermediate CA Certificates (via the Ceremony tool) abides by the requirements we place on ourselves via our CPS. Provide a small collection of useful constants for these lints to share. Import all of these lints from our lint package, so that they are automatically registered with zlint's `GlobalRegistry` and are automatically included in all of our lint checks. At this time, only three lints are included, checking that the validity periods of our various certificate types do not exceed their CPS-set maximums. Additional lints for key sizes, distinguished names, key usages, policy OIDs, AIA URLs, and more will be added in the future. Part of #5492
The first version of these lints have landed! Next steps are:
|
Would you consider moving the lints into configuration files? This would promote cleaner re-use of Boulder with other CA certificates. |
All lints can be excluded via existing configuration files. If/when we move the lints into our cp-cps repo, they could easily be substituted via a |
Ah didn't realize the allow list limitation. Thanks 😄 |
We do pre-issuance linting using zlint to ensure that we are compliant with the baseline requirements and various root program requirements. As Bug 1715455 shows, it is possible to still misissue by being in violation of one's own CP/CPS, rather than in violation of root program requirements. We should consider forking zlint to add a new directory of lints based on the contents of our own CP/CPS.
The text was updated successfully, but these errors were encountered: