[TLS] Re: I-D Allow using serverAuth certificates for mutual TLS (mTLS) authentication in server-to-server usages - updates rfc5280 and rfc6066

Nico Williams <nico@cryptonector.com> Fri, 20 June 2025 19:27 UTC

Return-Path: <nico@cryptonector.com>
X-Original-To: tls@mail2.ietf.org
Delivered-To: tls@mail2.ietf.org
Received: from localhost (localhost [127.0.0.1]) by mail2.ietf.org (Postfix) with ESMTP id 4BAF537806C5 for <tls@mail2.ietf.org>; Fri, 20 Jun 2025 12:27:27 -0700 (PDT)
X-Virus-Scanned: amavisd-new at ietf.org
X-Spam-Flag: NO
X-Spam-Score: -2.096
X-Spam-Level:
X-Spam-Status: No, score=-2.096 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001] autolearn=unavailable autolearn_force=no
Authentication-Results: mail2.ietf.org (amavisd-new); dkim=pass (2048-bit key) header.d=cryptonector.com
Received: from mail2.ietf.org ([166.84.6.31]) by localhost (mail2.ietf.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id PbPaWlYtjYNo for <tls@mail2.ietf.org>; Fri, 20 Jun 2025 12:27:26 -0700 (PDT)
Received: from slategray.cherry.relay.mailchannels.net (slategray.cherry.relay.mailchannels.net [23.83.223.169]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-256) server-digest SHA256) (No client certificate requested) by mail2.ietf.org (Postfix) with ESMTPS id 97A8637806B9 for <tls@ietf.org>; Fri, 20 Jun 2025 12:27:26 -0700 (PDT)
X-Sender-Id: dreamhost|x-authsender|nico@cryptonector.com
Received: from relay.mailchannels.net (localhost [127.0.0.1]) by relay.mailchannels.net (Postfix) with ESMTP id CBC2B4E342E; Fri, 20 Jun 2025 19:27:25 +0000 (UTC)
Received: from pdx1-sub0-mail-a221.dreamhost.com (trex-green-4.trex.outbound.svc.cluster.local [100.96.195.136]) (Authenticated sender: dreamhost) by relay.mailchannels.net (Postfix) with ESMTPA id 26E404E5D80; Fri, 20 Jun 2025 19:27:24 +0000 (UTC)
ARC-Seal: i=1; s=arc-2022; d=mailchannels.net; t=1750447644; a=rsa-sha256; cv=none; b=ta6B0icV/DAFIwKnb/YrVT8yIMSGmis1GM0P2ycFYqRq7TUiwkCsyl97paJJLONMTxGDay Kdq2ThrCfuD0ONdl+E9rXofRtGCnk9VfVHzL4dVCxuek8Qfq/3Sl/PTWNYgrKwy3Ug0/pV UAvog4g+m3/mncHPyRucFj7pkQqIp5DtGPAdL+nPOtA2iis6X3I91Cd12yQvXLSyGHK6sW JsC7az8NTZ+Z6JWvPCx2uQkRNc/6dW5Ij0+sNmWH7lvUp6WAxCWUeUiUzI6ry7S1/mRO0/ nhiL8FnLA7HJhMYQoRFkmnkheSaHSc2fPDIC2crv6YdO4jdfLx9zPea06vteLA==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=mailchannels.net; s=arc-2022; t=1750447644; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=zYuSMK2CqhQbSO0Z09FmmMNbQ+4PdPVI3mbWkf/x4yA=; b=ZZ+0Jw6+hF/zdyFa7q1Wc1sW/ClNLMAAnVPqkwTQJVDBASw8jca5BjyMtHgNhoOSA8UdF5 DkupF3HMfgvDiGDHlQ5IbvPl0rTnJqxmtIdKzl/jPUAyfyhB8ZLOiO5dlEwRrBxrkYS26K x8DpUrxEkl66Iwlei/gn+jSC0ukfBfuFCAk+EnFmyYSRsgd+pmA+vjOOyQKu6uG7N/g28y 596TiJevIvSrRdaoEEd/cr82V6WxHMjRQjrRkEsUFBssLXFIvKMjM01Ympc3iVTdEkDFIb 148JxuS68KuFgak8hbAYYN9skm2S3ivsFTEtEeGtwj5wsU+OJ+e1QG2ML9nV7g==
ARC-Authentication-Results: i=1; rspamd-6597f9cdc7-nwjs9; auth=pass smtp.auth=dreamhost smtp.mailfrom=nico@cryptonector.com
X-Sender-Id: dreamhost|x-authsender|nico@cryptonector.com
X-MC-Relay: Neutral
X-MailChannels-SenderId: dreamhost|x-authsender|nico@cryptonector.com
X-MailChannels-Auth-Id: dreamhost
X-Abortive-Belong: 3d4ba93f525b5117_1750447644407_1314181635
X-MC-Loop-Signature: 1750447644407:4293230446
X-MC-Ingress-Time: 1750447644407
Received: from pdx1-sub0-mail-a221.dreamhost.com (pop.dreamhost.com [64.90.62.162]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384) by 100.96.195.136 (trex/7.0.3); Fri, 20 Jun 2025 19:27:24 +0000
Received: from ubby (syn-075-081-095-064.res.spectrum.com [75.81.95.64]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange ECDHE (P-256) server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) (Authenticated sender: nico@cryptonector.com) by pdx1-sub0-mail-a221.dreamhost.com (Postfix) with ESMTPSA id 4bP6tg3jWRzFR; Fri, 20 Jun 2025 12:27:23 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=cryptonector.com; s=dreamhost; t=1750447644; bh=zYuSMK2CqhQbSO0Z09FmmMNbQ+4PdPVI3mbWkf/x4yA=; h=Date:From:To:Cc:Subject:Content-Type:Content-Transfer-Encoding; b=GGxL7755/+rsbClofX7b8+SSgOpMzwM+CTnXP7rUqqinU8j1uKZ6xadTCIUyYs1W2 pmAS0mSQgTFEAAaw4D7o5VDfxmBKUQYedkiwyZPkZQQueZPf1YBow0xi6WHZDu0Z2b 9BjK36VZPk7pIGWLbjdJ77mH1HSDABt76RxmXWVShNXw17z6XUjUeu6Ya1GULr+zpY vwi7U8SgW9G8502Ky3uY+8SGWF16b2fP5XO0cUQ2ZDFWGmtlT4Eg6m+LRA1kNd9PVi pcFFKhrf/gvv0UcEZw+GRnHyQGLG/jpyojI5S6F/+nMc22E2qPiVtaR28nC5WoyZ21 zAj4tfJZUHZnQ==
Date: Fri, 20 Jun 2025 14:27:21 -0500
From: Nico Williams <nico@cryptonector.com>
To: David Benjamin <davidben@chromium.org>
Message-ID: <aFW2GSyGI9NT3mpL@ubby>
References: <45jp5tle7ixk7xhc57j5extnhg772nhhguqp4arvuppjuotkdo@jq5vd74bdpbg> <CAF8qwaAj8rYkRWatDuxmBQ+TQu7Yw1GPNm-Jf+W1CT0j18nwBg@mail.gmail.com>
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Disposition: inline
Content-Transfer-Encoding: 8bit
In-Reply-To: <CAF8qwaAj8rYkRWatDuxmBQ+TQu7Yw1GPNm-Jf+W1CT0j18nwBg@mail.gmail.com>
Message-ID-Hash: DKAZ5H5ZEXOWK4RYZIASQ4O3PPN3YFQY
X-Message-ID-Hash: DKAZ5H5ZEXOWK4RYZIASQ4O3PPN3YFQY
X-MailFrom: nico@cryptonector.com
X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; emergency; loop; banned-address; member-moderation; header-match-tls.ietf.org-0; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header
CC: Klaus Frank <draft-frank-mtls-via-serverauth-extension=40frank.fyi@dmarc.ietf.org>, tls@ietf.org
X-Mailman-Version: 3.3.9rc6
Precedence: list
Subject: [TLS] Re: I-D Allow using serverAuth certificates for mutual TLS (mTLS) authentication in server-to-server usages - updates rfc5280 and rfc6066
List-Id: "This is the mailing list for the Transport Layer Security working group of the IETF." <tls.ietf.org>
Archived-At: <https://mailarchive.ietf.org/arch/msg/tls/m6Nk5O5LTPJb0dfhVx3iJ14aFDk>
List-Archive: <https://mailarchive.ietf.org/arch/browse/tls>
List-Help: <mailto:tls-request@ietf.org?subject=help>
List-Owner: <mailto:tls-owner@ietf.org>
List-Post: <mailto:tls@ietf.org>
List-Subscribe: <mailto:tls-join@ietf.org>
List-Unsubscribe: <mailto:tls-leave@ietf.org>

On Tue, Jun 17, 2025 at 02:16:19PM -0400, David Benjamin wrote:
> (As always, wearing an individual hat here. In particular, I am *not*
> speaking on behalf of the Chrome Root Program.)

Can we somehow inquire as to the Chrome Root Program's rationale for
this change?  What alternatives were considered?  Was backwards compat
considered in making this change?  Is the program open to alternatives?

The links you listed help, but they do not fully elucidate.  I have
questions below.  Specifically the links you listed show that the
concern is indeed applications with bad trust anchor defaults (i.e., the
WebPKI roots) that use name forms other than dNSName (e.g., rfc822Name,
for S/MIME), which matches my speculation elsewhere in this thread.

What is not clear to me is why a slightly different policy would not be
acceptable that also limits the breakage caused by this change.

The slightly different policy I'm proposing is that the WebPKI CAs
should not issue any certificates with any name forms other than
dNSName, and that they must have either or both of clientAuth and
serverAuth EKUs.

The reasons I'd prefer such a policy are:

 - I don't see how PKIs for dNSName client certs would function
   differently than WebPKI CAs do for dNSName server certs!

   Therefore it follows that the two could and even should be the same
   PKIs.

 - There exist protocols that are fairly symmetric, such as SMTP (TURN)
   and others.  I don't see what value anyone gets from making the
   entities playing the TLS client role in those should use different
   PKIs than from the same entities playing the TLS server role.

 - Such a policy would not break current uses of WebPKI-issued EE
   dNSName client certs.  This relates to the previous item.

> This draft is not the way to solve this problem.

I agree, but I want to explore the policy change that motives it and
potential alternative policy changes that mitigate the motivation for
OP's I-D.

> As for PKI hierarchies, the Web PKI, as curated by web clients,
> authenticates web servers. All the policies and expectations around it,
> from monitoring to domain validation to Certificate Transparency, are
> maintained with web servers in mind. [...]

I would say that "As for PKI hierarchies, the Web PKI, [...],
authenticates machine FQDNs".  More specifically I would say that the
WebPKI does not certify any other name forms than dNSName.

Do you disagree?

Rephrased: is there any reason that the WebPKI cannot certify
dNSName-only certificates for _clients_?

What really differs between a certificate for dNSName foo.bar.example w/
serverAuth and dNSName foo.bar.example w/ clientAuth besides the EKUs?
Is `foo.bar.example` not the same entity either way?

If prior to this change the WebPKI could be said to not be able to
reliably certify dNSName clientAuth certs then I would agree with the
policy change.  But if so I'd like to understand why the WebPKI could
not reliably certify dNSName clientAuth certs.

> That is not to say that backend services shouldn’t authenticate as TLS
> clients with certificates. If a backend service needs to take the role of a
> TLS client, a certificate from some PKI is a fine way to solve that. But
> there is no reason for that to use the same PKI hierarchies as web server
> authentication. [...]

I really want to understand why the WebPKI cannot authenticate _clients_
w/ _only_ dNSName SANs.

You are making the assertion, but I don't understand the rationale, and
there must be one, and it might well become obvious when you lay it out.

>          [...]. You could use entirely private hierarchies, hierarchies
> shared across a large class of applications (e.g. all of S/MIME), or
> anything in between. As noted elsewhere in this thread, and in the
> references you linked, this is the standard way you build applications with
> TLS and X.509:

I am not sure that a PKI for rfc822Name-named client entities would be
appropriate for dNSName-named client entities.  If anything I'm sure of
the opposite.

ISTM that for dNSName-named client entities there is no better way to
identify and authenticate those entities to the issuing CAs than... the
same mechanisms we use now for dNSName-named _server_ entities.

If a PKI for dNSName-named client entities would work no differently
than the WebPKI does for dNSName-named server entities then I want to
understand why not use the WebPKI for dNSName-named client entities.

My suspicion is that the Chrome Root Program's motivation for this
change was indeed name forms other than dNSName ones, and that with the
bathwater out went the baby.

Nico
--