Skip to content
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

Address inconsistencies between RFC5280 and CABF BRs/X.520 #762

Open
robplee opened this issue Nov 8, 2023 · 5 comments
Open

Address inconsistencies between RFC5280 and CABF BRs/X.520 #762

robplee opened this issue Nov 8, 2023 · 5 comments

Comments

@robplee
Copy link
Contributor

robplee commented Nov 8, 2023

I'm not sure what the exact answer is to this situation but I wonder if the configurable lints (#624 / #648 ) work might be able to help us?

A problem we have is where there are inconsistencies between standards. For example RFC5280 states that a subject:postalCode may be at most 16 characters long and we have a lint enforcing this: "e_subject_postal_code_max_length"/lint_subject_postal_code_max_length.go".

However, the CABF BRs say that the max length for a subject:postalCode is that stated by X.520 which is 40 characters. So the issue is that zlint will throw an error about certificates that are considered valid by the CABF BRs. I think this could be an issue for CAs using zlint for pre-issuance linting.

I've had a look at where the BRs specify limits not from RFC5280 and I think it's only lengths of postalCode attributes where we have an issue but I'm happy to be corrected on this if I've missed any attributes where we have inconsistencies between the RFCs/other standards that we lint against.

@zakird
Copy link
Member

zakird commented Nov 9, 2023

I hold pretty strongly that ZLint is not the right place to adjudicate discrepancies between standards. We broadly want to create lints that match published standards as exactly as possible. We've gotten into trouble in the past when we do otherwise. If 5280 and the BRs have two contradictory statements, then we should have two contradictory lints that have the attributed source and match the standard. This allows two options: (1) The standards bodies can (and should) figure out what they need to do to resolve the discrepancy, and (2) CAs and researchers can decide which of the sets of lints that they want to use. In the end, it's up to the CA to decide whether they want to ignore what's written in 5280.

@robplee
Copy link
Contributor Author

robplee commented Nov 9, 2023

Hi @zakird I completely agree that zlint is not the place to decide which standards to enforce or what rule to apply where there are contradictions. My thinking is also that we'd have lints for both the CABF/X.520 length in addition to the existing RFC5280 lint for postalCode length. Then users of zlint could choose if they want to configure the RFC lint to disable it (it would be enabled by default) if they wanted to allow issuance of certificates with a 17 character postal code as is allowed by the BRs.

The issue/PR I linked in my first post was about making lints configurable so I think this is a place where we might be able to use that feature.

@zakird
Copy link
Member

zakird commented Nov 9, 2023

Yes! I'm down for also having a CABF/X.520 lint in place. I don't think this is a matter of having a configurable lint though, I think we want two lints — one associated with each standard.

@robplee
Copy link
Contributor Author

robplee commented Nov 9, 2023

I think I have not explained myself well at all 😆. My thinking is two lints, one for RFC and another for CABF/X.520. Then we want a means for users to avoid running/failing the RFC lint if one wants to follow the CABF/X.520 version of the rule.

My thinking was by making the RFC lint configurable we could achieve it not failing and returning NA/NE instead but I am open to other suggestions. I know there also exists the linting "profile" concept (#595 ) - maybe a profile would be a better solution where it would include all but the RFC5280 postalCode lint.

@zakird
Copy link
Member

zakird commented Nov 9, 2023

I think in this situation, the user would be best off simply excluding the RFC5280 lint from the corpus, which I think the APIs already support. I do this the lint is failing and we don't want to have the lint pretend otherwise, we're just ignoring it as a lint in its entirety. I also agree that this could be handled with a Profile, which seems like it's a good fit for this type of configuration.

baloo added a commit to baloo/zlint that referenced this issue Jan 23, 2024
With SC62, the CABF BR now lists SKI as not recommended.

Per discussion in zmap#762, zlint should provide two lints, one for rfc5280
behavior and one for CABF BR.

Both lint will conflict with each other, users are expected to select
(or ignore) which behavior they mean to follow.

Fixes zmap#749
baloo added a commit to baloo/zlint that referenced this issue Jan 29, 2024
With SC62, the CABF BR now lists SKI as not recommended.

Per discussion in zmap#762, zlint should provide two lints, one for rfc5280
behavior and one for CABF BR.

Both lint will conflict with each other, users are expected to select
(or ignore) which behavior they mean to follow.

Fixes zmap#749
christopher-henderson added a commit that referenced this issue Feb 11, 2024
* Subject Key Identifier is not recommended by CABF BR v2

With SC62, the CABF BR now lists SKI as not recommended.

Per discussion in #762, zlint should provide two lints, one for rfc5280
behavior and one for CABF BR.

Both lint will conflict with each other, users are expected to select
(or ignore) which behavior they mean to follow.

Fixes #749

* Test data for SKI not recommnended

Co-Authored-By: Christopher Henderson <[email protected]>

---------

Co-authored-by: Christopher Henderson <[email protected]>
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

No branches or pull requests

2 participants