Re: [certid] Need to define "most specific RDN"

Nelson B Bolyard <nelson@bolyard.me> Fri, 16 July 2010 01:04 UTC

Return-Path: <nelson@bolyard.me>
X-Original-To: certid@core3.amsl.com
Delivered-To: certid@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id 11F8C3A687F for <certid@core3.amsl.com>; Thu, 15 Jul 2010 18:04:46 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.599
X-Spam-Level:
X-Spam-Status: No, score=-2.599 tagged_above=-999 required=5 tests=[BAYES_00=-2.599]
Received: from mail.ietf.org ([64.170.98.32]) by localhost (core3.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id E00oliaW0oL2 for <certid@core3.amsl.com>; Thu, 15 Jul 2010 18:04:44 -0700 (PDT)
Received: from p3plsmtpa01-10.prod.phx3.secureserver.net (p3plsmtpa01-10.prod.phx3.secureserver.net [72.167.82.90]) by core3.amsl.com (Postfix) with SMTP id 940023A6860 for <certid@ietf.org>; Thu, 15 Jul 2010 18:04:44 -0700 (PDT)
Received: (qmail 22696 invoked from network); 16 Jul 2010 01:04:54 -0000
Received: from unknown (74.121.22.10) by p3plsmtpa01-10.prod.phx3.secureserver.net (72.167.82.90) with ESMTP; 16 Jul 2010 01:04:54 -0000
Message-ID: <4C3FB02F.3090006@bolyard.me>
Date: Thu, 15 Jul 2010 18:04:47 -0700
From: Nelson B Bolyard <nelson@bolyard.me>
User-Agent: Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; en-US; rv:1.9.1.10) Gecko/20100512 Thunderbird/3.0.5
MIME-Version: 1.0
To: certid@ietf.org
References: <201006301746.o5UHkIsE019133@fs4113.wdf.sap.corp> <4C2B843A.5010206@stpeter.im> <4C305B93.9090001@velox.ch> <201007061435.29786.ludwig.nussel@suse.de> <4C335CE5.1090608@edelweb.fr> <4C3421B3.3070404@velox.ch> <4C3B4F6E.80903@stpeter.im> <4C3DDC18.4020808@bolyard.me> <4C3E979B.4050401@velox.ch>
In-Reply-To: <4C3E979B.4050401@velox.ch>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
Subject: Re: [certid] Need to define "most specific RDN"
X-BeenThere: certid@ietf.org
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: Representation and verification of identity in certificates <certid.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/certid>, <mailto:certid-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/certid>
List-Post: <mailto:certid@ietf.org>
List-Help: <mailto:certid-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/certid>, <mailto:certid-request@ietf.org?subject=subscribe>
X-List-Received-Date: Fri, 16 Jul 2010 01:04:46 -0000

On 2010/07/14 22:07 PDT, Kaspar Brand wrote:
> On 14.07.2010 17:47, Nelson B Bolyard wrote:
>> Trying to apply DNS name constraints to subject CNs is a can of
>> worms, because subject CNs may legitimately contain things that are
>> not DNS names at all.  It's not correct to declare a cert chain
>> invalid because the EE cert contains CN="Peter Saint-Andre" and
>> also CN="www.stpeter.im" but the issuer CA is constrained to
>> "*.stpeter.im".  There's no test that 100% accurately answers the
>> question "Is this string a DNS name or not?", and so it is not
>> generally possible to answer the question "Should this CN be
>> subjected to a DNS name constraint or not?".
>> 
>> SANs solve this whole problem.  They have a component that may ONLY
>> contain DNS names, and therefore is easily constrained.  DNS name
>> constraints would be effective if certs ONLY put DNS names into
>> SANs.
> 
> That's an argument for completely banning CN-IDs, in the first
> place. But I fail to see how it is relevant for the decision whether
> to only check the "(most specific) Common Name field" or all of the
> CNs.

See my argument below.

>> But putting DNS names into SANs effectively bypasses name
>> constraints (at least, in implementations I tested last year).
> 
> Should read "... into CNs", I guess?

Yes, sorry.

> In any case, if you disregard CNs in the subject for name matching as
> soon as there is a subjectAltName extension with at least one dNSName
> (as draft-saintandre-tls-server-id-check-08 does), then it's becoming
> a non-issue.

Yes, but as I read it, people here are proposing to open the spec to say
that multiple CN-IDs are just as acceptable as multiple DNS names in a
SAN.  Frankly, IMO, that will kill SANs and name constraints too.

SANs are having enough trouble getting off the ground.  FAR too many
people still think that CN-IDs are *THE* standard, and are utterly
unaware of SANs.  If we raise multiple CN-IDs to a status they did not
enjoy with RFC 2818, then there will remain no motivation to use SANs at
all, and constraints will die.

Today, the ONE motivation to use SANs is to get multiple DNS names into
a cert.  And that brings with it the hope of constraints.  Take away
that sole motivation, and constraints die.

Sorry, I'm repeating myself.  This constraints issue is very important.

>> IMO, we should be attempting to drive a stake in the heart of DNS names in
>> subject CNs, and moving all CAs to use SANs exclusively for DNS names.
> 
> -08 already does this in several places:
> 
>        The certificate SHOULD NOT represent the server's fully-qualified
>        DNS domain name in a CN-ID, even though many deployed clients
>        still check for this legacy identifier configuration within
>        certificate subjectName. [...]
> 
>       Notwithstanding any of the foregoing rules, reference identifiers
>       of type CN-ID (if included) MUST always be the lowest-priority
>       reference identifiers in the list. [...]
> 
>       Security Note: A client MUST NOT seek a match for a reference
>       identifier of CN-ID if the presented identifiers include an
>       SRV-ID, URI-ID, DNS-ID, or any application-specific subjectAltName
>       entry types supported by the client.
> 
> I'm doubtful if adding a MUST NOT for CN-IDs (vs. a SHOULD NOT) would
> have a considerable impact on future CA practices. Most of them probably
> don't want to risk compatibility issues with legacy implementations
> (which don't recognize the subjectAltName extension).

Can you name any browser or other important network client made in the
last 8 years (since RFC 3280 was published) that does SSL3 and/or TLS
but doesn't recognize DNS names in SANs?

Best Regards,
/Nelson