Remove support for Netscape certs#9241
Remove support for Netscape certs#9241richsalz wants to merge 1 commit intoopenssl:masterfrom richsalz:rm-netscape-certtypes
Conversation
|
There is a build failure: but that also fails on master to not relevant here. |
|
-1 blocker to enable discussion to occur before approval |
crypto/x509/v3_purp.c
Outdated
There was a problem hiding this comment.
The two lines above this are redundant with this line.
lines 620~623 could be consolidated
return check_ca(x)
crypto/x509/v3_purp.c
Outdated
There was a problem hiding this comment.
This function could just be:
return check_ca(x);
But, then with this simplification, the check_ssl_ca() function could be replaced with check_ca()
|
additional commit pushed, @tmshort please take a look. |
|
Thoughts on this? Netscape cert extensions should really be removed; even the maintainers of NSS think so. :) |
|
I can't remember seeing much of a discussion related to this. It's been a long time since I've seen the netscape extensions, so I can't say that I'd miss much of anything that's removed in this PR. Considering none of them are critical (as far as I know), and they have been deprecated for a long time (see the docs), I'm not sure I understand the hold. |
|
Richard Levitte wrote:
I can't remember seeing much of a discussion related to this. It's been a long time since I've seen the netscape extensions, so I can't say that I'd miss much of anything that's removed in this PR.
Considering none of them are critical (as far as I know), and they have been deprecated for a long time (see the docs), I'm not sure I understand the hold.
In certificate list on my linux I cound find 2 certificates - one
expired this month another one in 2027 - Issuer: C=FR, O=Dhimyotis,
CN=Certigna
So why to remove them ?
|
|
The Certigna cert is here: https://crt.sh/?id=62358
Look at the details of the cert – it’s a root CA – and the netscape extensions are *WRONG* but the PKIX extensions are *RIGHT*
|
|
Not sure that the NS extensions are actually wrong... all they say is that this is a CA cert, and that it can be used in all kinds of contexts: SSL, S/MIME or object signing. In other words, it can be used to verify leaf certificates with all those uses. Or have I misunderstood NS extensions? |
|
That being said, since the PKIX extensions are in place, serving the same purpose, and the key usage marked critical (as it should), the NS extensions really don't serve much of a purpose, except commentary. |
|
You're not quite reading it correctly; the NS extensions say it can sign other specific types of CA's. But you are correct about the critical keyUsage extension. So I think that while @petrovr pointed out an interesting cert, it won't be impacted if this PR is merged. |
|
I think in view of the commit I just pushed, this still needs another review. |
|
Oups, something disappears : EXT_IA5STRING macro could be removed too. These 3 were undocumented, but public interface ... |
|
Updated commit pushed.
|
|
Should the i2s/s2i_IA5STRING functions be removed? |
|
To answer my question: no, the functions should not be removed. I put them back, but in another file. Tim put a -1/hold on this three weeks ago. What's the next step? |
|
If someone within the OMC disagrees with the view, then they call a vote to get a formal OMC decision. If no-one in the OMC wants to take it to a vote then it remains blocked. I disagree that the maintainers of NSS think we should remove this from OpenSSL. They might think they don't currently use it themselves - and they might recommend using PKIX in preference - but that is different from us deciding to remove the code. I think you have missed that context. And yes I did actually talked to a key NSS person about the distinction between the two contexts. |
|
With @levitte having already approved this, a vote might be desirable. |
|
In this issue we could see clean up of openssl configuration. This part is fine - if extension is not used then exclude from sample configuration. Another part is to remove support from code even without deprecation period! I know projects where some functionality still exist even if it was deprecated more then 15 years ago. So what about to mark related "definitions NS_*" x509v3.h as deprecated and in 2028 to remove them? |
|
@t-j-h I also spoke with a couple of "key" RedHat and Mozilla folks and got a different take. The documentation has marked the extensions as deprecated for more than a decade: Isn't that long enough? |
|
There probably is still software that supports this. I think we
removed something simular in 1.1.0 and someone complained that
their product still supported importing such certificates and was
now broken.
|
|
@richsalz did you ask them if they can guarantee that there are no active users of this capability at all? That is the right question to be asked for compatibility and matches our context. Anyone making an assertion that they don't exist and you cannot find them in usage anywhere would be wrong - as already noted in a single instance in this PR. And that capability was not marked as deprecated in the code.
|
|
No I did not ask if they can guarantee, the answer would be as ridiculous as asking if OpenSSL could gaurantee any kind of use. Yes, the instance was reported, and I commented on it. This has a hold and two approvals, it seems that the right thing is for the OMC to hold a discussion and vote. If nothing happens in a couple of weeks I'll close the PR and delete the branch. |
|
@richsalz it has one OMC hold, one OMC approval, and one OMC questioning if this should actually be removed (public PR comments). It is being discussed. |
|
@t-j-h we're both right, subsetting different things. One OMC approval, one committer approval and one hold -- those are the "actionable" things. Is this the discussion, or is it happening on the OMC list internally? |
|
I was mistaken, @FdaSilvaYY isn't a committer. Glad the discussion, and eventual resolution I hope, is happening. |
|
For a reason that I ignore , I was able to approve. Sorry for the confusion. May I suggest adding a config option (yes, one more) to disable these old extensions support ? |
It makes perfect sense that GitHub let's you approve or request changes. Because your opinion (and that of other contributors) is highly appreciated. The only difference is that your vote does not count pro or contra acceptance. If you look closely, you will notice that the check mark of your approval is colored grey, while Richard's check mark is green. |
Also added some explanatory comments. Moved the to/from string<>ASN1_IA5 functions to another file.
|
This goes against the stated compatibility plans so I'm closing this. If someone wants to recreate for a future release, feel free to adopt the branch. :) |
This removes support for the old Netscape cert extensions.
To quote email from Mozilla folks I have: "In general if there is an IETF PKIX replacement for a Netscape datatype, then you don't need to support the Netscape datatype. Therefore OpenSSL does not need to support Netscape cert types and Netscape cert sequence."
This is the first of a couple planned PR's in this area.