Skip to content

OU (2.5.4.11) is incorrectly omitted from the allow list in e_ev_extra_subject_attribs#915

Merged
christopher-henderson merged 1 commit intomasterfrom
allow_ou
Feb 16, 2025
Merged

OU (2.5.4.11) is incorrectly omitted from the allow list in e_ev_extra_subject_attribs#915
christopher-henderson merged 1 commit intomasterfrom
allow_ou

Conversation

@christopher-henderson
Copy link
Copy Markdown
Member

@christopher-henderson christopher-henderson commented Feb 8, 2025

The relevant date table of the EV CABF guidelines specifically references that §9.2.7 regarding the prohibition of subject:organizationalUnitName (OID: 2.5.4.11) takes effect on 2022-09-01 rather than inheriting the effective date of the parent revision.

Compliance Date Section(s) Summary Description
2022-09-01 [9.2.7] CAs MUST NOT include the organizationalUnitName field in the Subject.

The lint's in-code documentation correctly identifies that it should not have an opinion on subject:organizationalUnitName (OID: 2.5.4.11) as that lint covers all other subject attributes and leaves OU to its own lint. However, we removed OU from the allow list of this lint in #903. For my part, I read the CABF guideline and agreed to the change because I had forgotten that there was wording elsewhere that overrides the parent document's effective date.

@XolphinMartijn and @defacto64 I would appreciate it if you would chime in on whether-or-not you may an argument against the above. If not then I will move forward with the change.

Thank you @mathewhodson for your PR at #911 which highlighted this issue.

@defacto64
Copy link
Copy Markdown
Contributor

defacto64 commented Feb 9, 2025

As it's reminded into the lint's code itself....

We also include the OU attribute here, even though it is now banned, because this lint
deals with a more general requirement that came into force long before the OU ban,
and there is already another lint that deals with the OU attribute specifically.

Since the lint has an effective date of util.SC16EffectiveDate (2019-04-16), when the OU was still allowed (it only became prohibited on 2022-09-01), I am not clear why @XolphinMartijn asked to remove it from this lint's table of allowed subject attributes. I am entirely in favour of restoring it.

As I pointed out in the in-code comments, there is already another lint that specifically deals with the OU prohibition (lint_organizational_unit_name_prohibited.go) based on its own and correct effective date (util.CABFBRs_OU_Prohibited_Date).

@XolphinMartijn
Copy link
Copy Markdown
Contributor

Since the lint has an effective date of util.SC16EffectiveDate (2019-04-16), when the OU was still allowed (it only became prohibited on 2022-09-01), I am not clear why @XolphinMartijn asked to remove it from this lint's table of allowed subject attributes. I am entirely in favour of restoring it.
@XolphinMartijn and @defacto64 I would appreciate it if you would chime in on whether-or-not you may an argument against the above. If not then I will move forward with the change.

I'm still in favor of not having OU in the allow list here. But I can live with it if you take a different direction ;)

I will expand on why I personally find it the better approach, which boils down to two items:

  1. Confusion. Yes, there's a comment in the code that it isn't allowed by the BRs. But, we also know people don't always read the manual!.
  2. Design Consistency. Now granted, I don't currently know what the design intent is here, and also, in this case it doesn't have too much effect. But IIUC, there's no such thing as a "EffectiveEndDate" in zlint. Now imagine there's a lint for an existing "MUST" requirement, but CABF changes that to a "MUST NOT". I would in such a case expect that zlint has to either update the existing lint, or remove it and add a new lint for the new requirement. Any such a change would not take into account any certificates issued prior to the change.
    Again, in this case that's not as much of an issue, but it is why I took that thought and applied it to this lint, especially as it was a newly added lint

@defacto64
Copy link
Copy Markdown
Contributor

But IIUC, there's no such thing as a "EffectiveEndDate" in zlint

Actually, the Lint struct includes an IneffectiveDate field (very seldom used).

@defacto64
Copy link
Copy Markdown
Contributor

Apart from that, let's take for example this EV certificate:
https://search.censys.io/certificates/399d72aaffa8e653567aed2cb99311160dccf54ca8b4a589b8099e9b402fcb04

Since it was issued on 2022-06-23, when the OU was still allowed, IMO it's wrong to raise an error about the OU attribute being present in the Subject of this cert. This would not have happened if it was not for PR#903.

My understanding, and it seems completely logical to me, is that Zlint should detect if the certificate has any features that break the rules that were in place at the time when the certificate was issued. If a certificate that was good when it was issued later "becomes" bad (as the rules change over time), it would not be correct to dispute something with the issuing CA.

@christopher-henderson
Copy link
Copy Markdown
Member Author

Yes, there's a comment in the code that it isn't allowed by the BRs. But, we also know people don't always read the manual!.

For my part, I actually spent well over an hour combing over the BRs trying to understand why the heck is in the allow list to begin with. All that work instead of scrolling up in the code file 🤕

@christopher-henderson christopher-henderson merged commit f8bbdec into master Feb 16, 2025
8 checks passed
@christopher-henderson christopher-henderson deleted the allow_ou branch February 16, 2025 15:20
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

Successfully merging this pull request may close these issues.

3 participants