Re: [lamps] [Technical Errata Reported] RFC5280 (5997)

Russ Housley <[email protected]>
Newsgroups gmane.ietf.x509
Message-ID <[email protected]>
Ben:

I would like to see the revised text put in the errata, and I think Hold for Doc Update is fine.

Russ


> On Mar 3, 2020, at 12:15 AM, Benjamin Kaduk <[email protected]> wrote:
> 
> That does seem like the right higher-order question, but it seems (to me)
> fairly inevitable that this errata report must be classified as "hold for
> document update" to give the WG a chance to make a definitive decision, as
> the original intent remains unclear.
> 
> -Ben
> 
> On Fri, Feb 28, 2020 at 01:52:07PM -0500, Ryan Sleevi wrote:
>> Thanks. You're absolutely right, that was an oversight on my part.
>> 
>> I think the higher-order question is what the syntax is "meant" to be, as
>> the use of an illustrative example alone has lead to confusion. Even if a
>> future revision retroactively 'blesses' ".example.com" as an ambiguity
>> within 5280, the semantics of that are also ambiguous.
>> 
>> On Fri, Feb 28, 2020 at 1:39 PM Russ Housley <[email protected]> wrote:
>> 
>>> Ryan:
>>> 
>>> I see the point you are trying to make, but the exact substitution that
>>> you propose breaks the sentence that follows.
>>> 
>>> OLD
>>> 
>>>   DNS name restrictions are expressed as host.example.com.  Any DNS
>>>   name that can be constructed by simply adding zero or more labels to
>>>   the left-hand side of the name satisfies the name constraint.  For
>>>   example, www.host.example.com would satisfy the constraint but
>>>   host1.example.com would not.
>>> 
>>> NEW
>>> 
>>>   For DNS names, restrictions MUST use the dNSName syntax in
>>>   Section 4.2.1.6.  Any DNS name that can be constructed by simply
>>>   adding zero or more labels to the left-hand side of the name satisfies
>>>   the name constraint.  For example, if the constraint contains
>>>   host.example.com, then www.host.example.com would satisfy the
>>>   constraint but host1.example.com would not.
>>> 
>>> On Feb 28, 2020, at 1:03 PM, Ryan Sleevi <[email protected]> wrote:
>>> 
>>> I've heard word that this may not have gone out to the PKIX list, but I
>>> did want to pass this along with LAMPS.
>>> 
>>> As both the current syntax and semantics are ambiguous, judging by
>>> implementation behaviour, I'm totally appreciative that the suggested
>>> change might be rejected or might be held for a hypothetical document
>>> update in the future.
>>> 
>>> However, I did want to bring to broader attention and document the fact
>>> that the ambiguity has lead to different levels of guarantees. It was
>>> recently pointed out to me that Apple adopted the "URI-like" syntax, as
>>> discussed at
>>> https://cabforum.org/pipermail/servercert-wg/2020-February/001676.html ,
>>> while as mentioned in the Errata, Go and OpenSSL seem to have adopted the
>>> "PEBKAC" syntax of assuming it's an encoding error.
>>> 
>>> Within the Web PKI, tools like Amazon's certlint treats this as an error,
>>> while tools like ZLint inherit Golang's permissiveness. As a consequence,
>>> unless the CA applies both checks (which is strongly recommended, due to
>>> certlint attempting to compile the ASN.1 modules to offer stricter
>>> validation), it's possible that such certificates might continue to
>>> proliferate. As discussed within the linked Golang issue, there's
>>> unfortunately a number of documentation examples that use the leading
>>> period example, and so RFC 5280 CAs that don't participate exclusively in
>>> the Web PKI are even more at risk of the varying interpretations.
>>> 
>>> ---------- Forwarded message ---------
>>> From: RFC Errata System <[email protected]>
>>> Date: Thu, Feb 27, 2020 at 5:54 PM
>>> Subject: [Technical Errata Reported] RFC5280 (5997)
>>> To: <[email protected]>, <[email protected]>, <
>>> [email protected]>, <[email protected]>, <
>>> [email protected]>, <[email protected]>, <[email protected]>, <[email protected]>,
>>> <[email protected]>, <[email protected]>
>>> Cc: <[email protected]>, <[email protected]>, <[email protected]>
>>> 
>>> 
>>> The following errata report has been submitted for RFC5280,
>>> "Internet X.509 Public Key Infrastructure Certificate and Certificate
>>> Revocation List (CRL) Profile".
>>> 
>>> --------------------------------------
>>> You may review the report below and at:
>>> https://www.rfc-editor.org/errata/eid5997
>>> 
>>> --------------------------------------
>>> Type: Technical
>>> Reported by: Ryan Sleevi <[email protected]>
>>> 
>>> Section: 4.2.1.10
>>> 
>>> Original Text
>>> -------------
>>> DNS name restrictions are expressed as host.example.com.  Any DNS
>>> name that can be constructed by simply adding zero or more labels to
>>> the left-hand side of the name satisfies the name constraint.
>>> 
>>> Corrected Text
>>> --------------
>>> The syntax of dNSName MUST be as described in Section 4.2.1.6.  Any DNS
>>> name that can be constructed by simply adding zero or more labels to
>>> the left-hand side of the name satisfies the name constraint.
>>> 
>>> Notes
>>> -----
>>> Currently, the syntax for a dNSName nameConstraint is left implicit, and
>>> thus has resulted in ambiguities in encoding and processing that have
>>> resulted in ineroperability issues.
>>> 
>>> One interpretation is that the dNSName nameConstraint must be a valid
>>> "host name" (as discussed in RFC 8499), which is to say must be a
>>> Fully-Qualified Domain Name in the preferred name syntax. This
>>> interpretation is supported by Section 4.2.1.6, which explicitly states
>>> that for the subjectAltName. As 4.2.1.10 does not define an exception to
>>> this (as discussed in Appendix B), the interpretation, along with the
>>> existing example, would conclude that this field uses preferred name
>>> syntax, and that "DNS name" here matches the "host name" interpretation
>>> from RFC 8499
>>> 
>>> A different interpretation is that the dNSName nameConstraint uses the
>>> modified syntax similar to the URI nameConstraint. That is, it explicitly
>>> permits a leading period to indicate that one or more labels preceding is
>>> required in order to satisfy the constraint. This allows subdomains, but
>>> does not allow the base domain to match. While the language for the DNS
>>> name constraint makes it clear that a host name with no preceding period
>>> matches both that host and sub-domains, the existence of a preceding period
>>> would constraint it to only subdomains.
>>> 
>>> Aligning with Section 4.2.1.6 would prohibit the latter interpretation, as
>>> the preferred name syntax does not permit leading periods. Alternatively,
>>> if the latter interpretation is intended, this section would benefit from
>>> making that explicit.
>>> 
>>> This has been a source of interoperability issues, with additional
>>> information and discussion captured at:
>>> - https://github.com/golang/go/issues/16347
>>> - https://rt.openssl.org/Ticket/Display.html?id=3562
>>> 
>>> While "running code" has aligned in being permissive with a leading
>>> period, implementations have gone and seemingly aligned on a third
>>> interpretation:
>>> 
>>> The syntax of a dNSName MUST be as described in Section 4.2.1.6, with the
>>> exception that it MAY contain a leading period. Any DNS name that can be
>>> constructed by simply adding zero or more labels to the left-hand side of
>>> the name, ignoring any leading period, satisfies the name constraint.
>>> 
>>> This seems to support implementations expecting the first interpretation
>>> in the certificates they receive, and seeing leading period as an encoding
>>> mistake, not an explicit desire for the second interpretation.
>>> 
>>> Instructions:
>>> -------------
>>> This erratum is currently posted as "Reported". If necessary, please
>>> use "Reply All" to discuss whether it should be verified or
>>> rejected. When a decision is reached, the verifying party
>>> can log in to change the status and edit the report, if necessary.
>>> 
>>> --------------------------------------
>>> RFC5280 (draft-ietf-pkix-rfc3280bis-11)
>>> --------------------------------------
>>> Title               : Internet X.509 Public Key Infrastructure Certificate
>>> and Certificate Revocation List (CRL) Profile
>>> Publication Date    : May 2008
>>> Author(s)           : D. Cooper, S. Santesson, S. Farrell, S. Boeyen, R.
>>> Housley, W. Polk
>>> Category            : PROPOSED STANDARD
>>> Source              : Public-Key Infrastructure (X.509)
>>> Area                : Security
>>> Stream              : IETF
>>> Verifying Party     : IESG
>>> _______________________________________________
>>> Spasm mailing list
>>> [email protected]
>>> https://www.ietf.org/mailman/listinfo/spasm
>>> 
>>> 
>>> 
> 
>> _______________________________________________
>> Spasm mailing list
>> [email protected]
>> https://www.ietf.org/mailman/listinfo/spasm
> 
> _______________________________________________
> Spasm mailing list
> [email protected]
> https://www.ietf.org/mailman/listinfo/spasm
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.