[lamps] Re: [EXT] Re: [TLS] Re: Re: TLS Client Certificates; a survey

Nico Williams <nico@cryptonector.com> Wed, 01 April 2026 04:59 UTC

Return-Path: <nico@cryptonector.com>
X-Original-To: spasm@mail2.ietf.org
Delivered-To: spasm@mail2.ietf.org
Received: from localhost (localhost [127.0.0.1]) by mail2.ietf.org (Postfix) with ESMTP id CBFCED48E7D2 for <spasm@mail2.ietf.org>; Tue, 31 Mar 2026 21:59:48 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ietf.org; s=ietf1; t=1775019588; bh=TnSUokEdOfDTvN8lSO6BeI2+4VMyctnoa2akkcrFbZg=; h=Date:From:To:Subject:References:In-Reply-To; b=QlEZjP6LiXadztEHOIcUhxHR2arJlMxxABdzw9tL+X1wVhaMYfoUdxTRBOlhjlQm2 YOAKEnwybKHwcNnMkmidgkI8wrp48eYw4/Kt4rqoY/BZ0SGPr2tTXRvL160VWTMngS QCaaLJVjbXP/0a1u6GNjT0uOmctADdvAyAv69Dls=
X-Virus-Scanned: amavisd-new at ietf.org
X-Spam-Flag: NO
X-Spam-Score: -2.087
X-Spam-Level:
X-Spam-Status: No, score=-2.087 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_H2=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_FILL_THIS_FORM_SHORT=0.01] autolearn=ham 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 1CS9jlNRLf_G for <spasm@mail2.ietf.org>; Tue, 31 Mar 2026 21:59:48 -0700 (PDT)
Received: from buffalo.tulip.relay.mailchannels.net (buffalo.tulip.relay.mailchannels.net [23.83.218.24]) (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 0C288D48E788 for <spasm@ietf.org>; Tue, 31 Mar 2026 21:59:41 -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 352FE823694; Wed, 01 Apr 2026 04:59:35 +0000 (UTC)
Received: from pdx1-sub0-mail-a220.dreamhost.com (trex-green-9.trex.outbound.svc.cluster.local [100.122.235.123]) (Authenticated sender: dreamhost) by relay.mailchannels.net (Postfix) with ESMTPA id C0EE182295C; Wed, 01 Apr 2026 04:59:34 +0000 (UTC)
ARC-Seal: i=1; a=rsa-sha256; d=mailchannels.net; s=arc-2022; cv=none; t=1775019574; b=XlYQKjlySlxR35tXUYB/aAZvtV+aczRvQMk82tqLAKP60U/J6dx9G1XB1qJE3HDSUerOAt RZ1Lp9gsXa91/zOhq7Lka9tbetSpktLhUDVIwC9TLRs+BDDFZZpyxPotTQoEkNKUOBFlfD C5r9g7+7ZA6GqgdHFoMccyJ4lAy397Ry8TBTrme5PPP0avu0HXNu2VXesPknv+fq0rpt8j ci0tDzrxOhz6og32UpG6zvaLFXHm7qC0k8Cdccb+LXfn6D9ARjcmYsNJK47CAv9eU1gaYG THE1EK3PXqyhtJ2zo6ELfo1dQX+HNtufGqwpkZdZcTQi+rb5ztEOrHV+mMtbXw==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=mailchannels.net; s=arc-2022; t=1775019574; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to: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=C47HdFeZzGbZDyCF1AZXMCs+jX1PxvI3W+aUlugq51M=; b=Am7/4geTewHDjOcg4d8e/jdXv/Z/7qg/tk5ascgaXEU/hYyoEuV9akoRcC2Lj/PDmf0VxA MRBu0tIRhxoQ10mHE9XOIqC4QWrKG6vQcCIRA09BGVWeHHaPGCfXpNdibUxbDD5LKJLywV WjlxBcyNPXAIaFjoea6PpLkdwUeropPkMlGeHzNAOekMsvly9SRO5RpXkJ17eX285fEAzm zWCvOjYnSWgXg0q1GY/nFUMCxvndSUo/cF9tkDKHBxr6NNLoJKlLhgX7TgVnJ3fQWD7Gg0 OuoNqAmV/8YAzkep8oHNmSBsZTkifX2R0CzAnZDPyxXZKC4X6lkwTS7MORnVCQ==
ARC-Authentication-Results: i=1; rspamd-7d86dcc447-z2xkv; 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-Descriptive-Broad: 243e6e0d4e9701d3_1775019575048_457160787
X-MC-Loop-Signature: 1775019575048:3043002396
X-MC-Ingress-Time: 1775019575048
Received: from pdx1-sub0-mail-a220.dreamhost.com (pop.dreamhost.com [64.90.62.162]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384) by 100.122.235.123 (trex/7.1.5); Wed, 01 Apr 2026 04:59:35 +0000
Received: from ubby (unknown [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-a220.dreamhost.com (Postfix) with ESMTPSA id 4flt7p23RYz30; Tue, 31 Mar 2026 21:59:34 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=cryptonector.com; s=dreamhost; t=1775019574; bh=C47HdFeZzGbZDyCF1AZXMCs+jX1PxvI3W+aUlugq51M=; h=Date:From:To:Subject:Content-Type:Content-Transfer-Encoding; b=THDejAa0K7LgL2/yoJ0CctU53PvLVa/IMNVN3tcoEtCDYNu8CKWYasU3/6d5JW5I2 3YvtPgkAyNge3SPpbz1Ux/wVwVP2lKsr2FsyX+cjrIU53wbnYizoisnvl0TwTM/O9w oEP2FwpivmDZjVpwtr9ssDY1bSoUY4ZDqWdqCs+MlWdhYeGvpCacmFR3s9KylOB8OG o6PNIcnRCf9PGiJ69fKf6Cwx1lIc/K++vqki3FLI2auQhbfmB/UK+WJRMpPr3LiQcs /iVNtIDP2KJQjuaGH4t//0n3IlTGSCr6pwZVckig83X1Eb4EFw2EGu1y0X22Vluj61 KI1BJiNtKbdSA==
Date: Tue, 31 Mar 2026 23:59:32 -0500
From: Nico Williams <nico@cryptonector.com>
To: spasm@ietf.org
Message-ID: <acymNB0GZgWny9YQ@ubby>
References: <ad0aef72-6a3a-4289-8477-9b6e99c1455f@gmail.com> <9C062770-BFE8-4281-BB05-367DCC57BDE1@ll.mit.edu> <A8B65EBF-643F-4EC8-8D25-52791DC3C472@gmail.com> <BN0P110MB14193D3D9B63931A80BA31329050A@BN0P110MB1419.NAMP110.PROD.OUTLOOK.COM> <acybzEcYfbwGHaAG@chardros.imrryr.org>
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Disposition: inline
Content-Transfer-Encoding: 8bit
In-Reply-To: <acybzEcYfbwGHaAG@chardros.imrryr.org>
Message-ID-Hash: CAFL7YOJQLLLQWA64GSQYBALT2Y7QSGV
X-Message-ID-Hash: CAFL7YOJQLLLQWA64GSQYBALT2Y7QSGV
X-MailFrom: nico@cryptonector.com
X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; emergency; loop; banned-address; member-moderation; header-match-spasm.ietf.org-0; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header
X-Mailman-Version: 3.3.9rc6
Precedence: list
Subject: [lamps] Re: [EXT] Re: [TLS] Re: Re: TLS Client Certificates; a survey
List-Id: This is the mail list for the LAMPS Working Group <spasm.ietf.org>
Archived-At: <https://mailarchive.ietf.org/arch/msg/spasm/eymZgEVYge4OhPLtXs9pum7gBrU>
List-Archive: <https://mailarchive.ietf.org/arch/browse/spasm>
List-Help: <mailto:spasm-request@ietf.org?subject=help>
List-Owner: <mailto:spasm-owner@ietf.org>
List-Post: <mailto:spasm@ietf.org>
List-Subscribe: <mailto:spasm-join@ietf.org>
List-Unsubscribe: <mailto:spasm-leave@ietf.org>

On Wed, Apr 01, 2026 at 03:15:08PM +1100, Viktor Dukhovni wrote:
> On Wed, Apr 01, 2026 at 02:05:14AM +0000, Blumenthal, Uri - 0553 - MITLL wrote:
> > Also, when I authenticate my browser’s TLS connection to an
> > email server via PIV smartcard (seems to fit whatever you guys call
> > “webPKI”?) — what EKU do you expect to see in my certificate?
> 
> Well, to be a TLS client, the EKU (if present) needs to include
> "clientAuth".

Because the relevant specs say so.

> > (Hopefully, not SAN with domain name? I assure you my identity does
> > not include one! 😉)
> 
> Why are you suddenly conflating EKUs with subject (alternative) names?
> A TLS client's identity (subject name, or SAN) application dependent.
> With a client certificate issued by a KDC it could be a kerberos
> principal SAN, it could be a DNS name, it could be an IP address or
> email address, or as you note just a CN/DN.
> 
> EKUs are about the key usage, not about the subject name.

They can go together though.  E.g., the PKINIT SANs have corresponding
EKUs.  But yes, they don't have to go together.  My preference would be
to have more application-specific EKUs to augment clientAuth and
serverAuth.

> > I don’t understand where you get the idea that CN/DN would get “only a
> > domain name”.
> 
> That's all it can be when issued by a WebPKI CA that authenticates
> domain control.

Right.

> > Regardless, unlike IPsec/IKE that that is described as a peer-to-peer
> > protocol (Initiator and Responder — but not Client and Server), TLS
> > has been defined as a Client-Server protocol. Thus, both ends
> > presenting “TLSServerAuth” EKU appears weird.

It's worth reminding everyone that in IPsec/IKE the initiator/responder
roles are symmetric in that any pair of nodes can trade which node plays
which role at any time.  This is not the case for TLS.  Sure TLS servers
can also be clients of other systems, but generally there is no random
traffic-initiation-related trading of which node is the TLS client or
server, except in the cases of SMTP and XMPP, which are or can be in
fact symmetric in this sense.  But its not true of web servers and their
clients -- they do not trade client and server roles.

> There are plenty of systems that are clients in some TLS connections,
> and servers in others.  The WebPKI's previous issuance of dual EKUs
> "clientAuth + serverAuth" after "verifying" domain control and binding a
> DNS SAN in the certificate met the needs of those systems.  They'll now
> to either switch to new trust anchors, or to implement software
> workarounds (that'll take a long time to percolate through the
> ecosystem) that equate serverAuth with clientAuth.

Yes.

> In many cases the right solution is to issue your own certificates
> to your clients, without sloppily relying on a 3rd-party PKI, but 
> that's not always possible.

Right!!  But also, this is something that should have required
discussion with the public rather than the Chrome Root Program's dictat.

This Chrome Root Program policy change has damaged the market and the
Internet.

Nico
--