RFR: 8213952: Relax DNSName restriction as per RFC 1123
Seán Coffey
sean.coffey at oracle.com
Mon Dec 3 17:11:27 UTC 2018
whoops:
latest webrev :
http://cr.openjdk.java.net/~coffeys/webrev.8213952.v4/webrev/
Regards,
Sean.
On 03/12/18 17:10, Seán Coffey wrote:
>
> The CSR related to this change has been approved.
>
> I made further edits to update the DNSName comment code to reference
> RFC 5280 rather than the obsoleted RFC 2459. I also updated the test
> case with a few extra tests per suggestion from Chris and others.
> Moved the dataprovider into a good and bad data set also.
>
> A follow on bug has been logged to update all references of RFC 2459
> to RFC 5280 (JDK-8214532)
>
> Regards,
> Sean.
> On 27/11/18 14:27, Seán Coffey wrote:
>> Thanks for the feedback Max. I'll ping Joe Darcy and check if a CSR
>> is required for this type of change. I'll revert back to this list
>> once I have an answer.
>>
>> keytool works well with the new change. I've modified the test as per
>> your suggestion :
>>
>> --- a/test/jdk/sun/security/tools/keytool/KeyToolTest.java
>> +++ b/test/jdk/sun/security/tools/keytool/KeyToolTest.java
>> @@ -1436,6 +1436,7 @@
>> testOK("", pre+"san3 -ext san=dns:me.org");
>> testOK("", pre+"san4 -ext san=ip:192.168.0.1");
>> testOK("", pre+"san5 -ext san=oid:1.2.3.4");
>> + testOK("", pre+"san6 -ext san=dns:1abc.com"); //begin with
>> digit
>> testOK("", pre+"san235 -ext
>> san=uri:http://me.org,dns:me.org,oid:1.2.3.4");
>>
>> Regards,
>> Sean.
>>
>> On 27/11/18 01:29, Weijun Wang wrote:
>>>
>>>> On Nov 26, 2018, at 11:15 AM, Weijun Wang <weijun.wang at oracle.com>
>>>> wrote:
>>>>
>>>>
>>>>
>>>>> On Nov 24, 2018, at 12:45 AM, Seán Coffey <sean.coffey at oracle.com>
>>>>> wrote:
>>>>>
>>>>> Thanks for your review Max. I've made the suggested edits.
>>>>> http://cr.openjdk.java.net/~coffeys/webrev.8213952.v3/webrev/
>>>> The change looks fine. Thanks.
>>>>
>>>>> I've also submitted a CSR for this change just to cover the
>>>>> behavioural aspect of the edit. Will push if/once that's approved
>>>>> by CSR team.
>>>> The CSR focuses on keytool but this is actually a library change.
>>>> There is no change with "add/remove/modify command line option" at
>>>> all.
>>>>
>>>> I would suggest talking about the DNSName class instead of keytool.
>>>> I understand it's internal but we can describe this change as a
>>>> non-minimal change on behavior so it's still worth a CSR. Or, you
>>>> can consult Joe what the best way is. Maybe he can spare you from
>>>> filing a CSR at all.
>>>>
>>>> BTW, you did try out keytool after this code change and "-ext
>>>> dns=1abc.com" is working now, right?
>>> You can add an extra line after line 1437 of
>>> test/jdk/sun/security/tools/keytool/KeyToolTest.java.
>>>
>>>> Thanks
>>>> Max
>>>>
>>>>> Regards,
>>>>> Sean.
>>>>>
>>>>> On 22/11/18 14:49, Weijun Wang wrote:
>>>>>> * DNSName.java:
>>>>>>
>>>>>> 91 if ((endIndex - startIndex) < 1)
>>>>>>
>>>>>> No need for inner parentheses.
>>>>>>
>>>>>> And, is there really a need to define alphaDigitsAndHyphen? How
>>>>>> about just (== '-' || inside alphaDigits)?
>>>>>>
>>>>>> * DNSNameTest.java:
>>>>>>
>>>>>> Space cannot appear anywhere, please add a test case like "a c.com".
>>>>>>
>>>>>> BTW, I assume you want to reuse this test for other sub-tasks of
>>>>>> JDK-8054380? I see the @summary is more general.
>>>>>>
>>>>>> No other comments.
>>>>>>
>>>>>> Thanks
>>>>>> Max
>>>>>>
>>>>>>> On Nov 22, 2018, at 12:51 AM, Seán Coffey
>>>>>>> <sean.coffey at oracle.com> wrote:
>>>>>>>
>>>>>>> p.s I've updated the testcase to test the IOException message
>>>>>>> for presence of "DNSName". Webrev updated in place.
>>>>>>>
>>>>>>> Regards,
>>>>>>> Sean.
>>>>>>>
>>>>>>> On 21/11/18 15:42, Seán Coffey wrote:
>>>>>>>> Thanks for the comments Bernd. Comments inline..
>>>>>>>>
>>>>>>>> On 16/11/18 21:27, Bernd Eckenfels wrote:
>>>>>>>>> Hello Sean,
>>>>>>>>>
>>>>>>>>> I was only looking at the inspected DNSName class, it still
>>>>>>>>> has some variations (but start now with DNSNames which is good
>>>>>>>>> already):
>>>>>>>>>
>>>>>>>>> 76 throw new IOException("DNSName must not be null or empty");
>>>>>>>>> 78 throw new IOException("DNSNames or NameConstraints with
>>>>>>>>> blank components are not permitted");
>>>>>>>>> 80 throw new IOException("DNSNames or NameConstraints may
>>>>>>>>> not begin or end with a .");
>>>>>>>>> 92 throw new IOException("DNSName SubjectAltNames with empty
>>>>>>>>> components are not permitted");
>>>>>>>>> 96 throw new IOException("DNSName components must begin with a
>>>>>>>>> letter or digit");
>>>>>>>>> 101 throw new IOException("DNSName components must consist of
>>>>>>>>> letters, digits, and hyphens");
>>>>>>>>>
>>>>>>>>> I did not check if those exceptions are catched and rethrown
>>>>>>>>> with something like „while validating the SubjectAltName
>>>>>>>>> Extension <num> of certificate <subject>...“, in my experience
>>>>>>>>> it helps if you do not have to find and review the actual
>>>>>>>>> certificates (in this case it might not be a problem if SAN is
>>>>>>>>> only in the end entity). You can probably remove „or
>>>>>>>>> NameConstraints“ and „SubjectAltNames“ from lines 78-92 (this
>>>>>>>>> is good if DNsNa
>>>>>>>> Ok - I've cleaned up the exception messages on line 78, 80, 92.
>>>>>>>> webrev updated in place :
>>>>>>>> http://cr.openjdk.java.net/~coffeys/webrev.8213952.v2/webrev/
>>>>>>>>
>>>>>>>>
>>>>>>>>> me applies to SAN or NameConstrained context and the
>>>>>>>>> validation logic does not know — so it’s not only more unified
>>>>>>>>> but also less missleading)
>>>>>>>>>
>>>>>>>>> BTW: probably not inthe scope of this fix but a subtype for
>>>>>>>>> validation errors which have getters for context/location and
>>>>>>>>> maybe error code and getValue() would allow callers to print
>>>>>>>>> nicer validation reports without relying on the message or
>>>>>>>>> Stacktraces.
>>>>>>>> That's a nice idea and one that should be followed up in
>>>>>>>> separate enhancement. We could lean on the new
>>>>>>>> `jdk.includeInExceptions` Security property which other
>>>>>>>> component areas have started to use lately.
>>>>>>>>
>>>>>>>> e.g. https://bugs.openjdk.java.net/browse/JDK-8207768
>>>>>>>>
>>>>>>>> regards,
>>>>>>>> Sean.
>>>>>>>>> Gruss
>>>>>>>>> Bernd
>>>>>>>>> --
>>>>>>>>> http://bernd.eckenfels.net
>>>>>>>>> Von: Seán Coffey <sean.coffey at oracle.com>
>>>>>>>>> Gesendet: Freitag, November 16, 2018 5:15 PM
>>>>>>>>> An: Bernd Eckenfels; security-dev at openjdk.java.net
>>>>>>>>> Betreff: Re: RFR: 8213952: Relax DNSName restriction as per
>>>>>>>>> RFC 1123
>>>>>>>>> Thanks for the comments Bernd. comments inline..
>>>>>>>>>
>>>>>>>>> On 16/11/18 12:40, Bernd Eckenfels wrote:
>>>>>>>>>> You could also add (a..b, false) and (.a, false), (a., false)
>>>>>>>>>> to the testcases.
>>>>>>>>> good point. test updated.
>>>>>>>>>> I noticed that there are different types of Exception
>>>>>>>>>> messages (DNS name, DNSName, DNS Name or name constrained,
>>>>>>>>>> DNS name and SAN), would be good if all of them have the same
>>>>>>>>>> keyword?
>>>>>>>>> I cleaned up some other references to DNSName in the
>>>>>>>>> sun.security.x509 package. I'm not sure what classes you were
>>>>>>>>> referencing the above examples from.
>>>>>>>>>
>>>>>>>>> new webrev :
>>>>>>>>> http://cr.openjdk.java.net/~coffeys/webrev.8213952.v2/webrev/
>>>>>>>>>
>>>>>>>>> regards,
>>>>>>>>> Sean.
>>>>>>>>>> Gruss
>>>>>>>>>> Bernd
>>>>>>>>>> --
>>>>>>>>>> http://bernd.eckenfels.net
>>>>>>>>>> Von: security-dev <security-dev-bounces at openjdk.java.net> im
>>>>>>>>>> Auftrag von Seán Coffey <sean.coffey at oracle.com>
>>>>>>>>>> Gesendet: Freitag, November 16, 2018 12:25 PM
>>>>>>>>>> An: OpenJDK Dev list
>>>>>>>>>> Betreff: RFR: 8213952: Relax DNSName restriction as per RFC 1123
>>>>>>>>>> Looking to make an adjustment to DNSName constructor to help
>>>>>>>>>> comply with
>>>>>>>>>> RFC 1123
>>>>>>>>>>
>>>>>>>>>> https://bugs.openjdk.java.net/browse/JDK-8213952
>>>>>>>>>> http://cr.openjdk.java.net/~coffeys/webrev.8213952/webrev/
>>>>>>>>>>
>>>>>>>>>> regards,
>>>>>>>>>> Sean.
>>>>>>>>>>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mail.openjdk.org/pipermail/security-dev/attachments/20181203/662a16ec/attachment.htm>
More information about the security-dev
mailing list