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

David Benjamin <davidben@chromium.org> Tue, 17 June 2025 18:16 UTC

Return-Path: <davidben@google.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 F02E43619779 for <tls@mail2.ietf.org>; Tue, 17 Jun 2025 11:16:38 -0700 (PDT)
X-Virus-Scanned: amavisd-new at ietf.org
X-Spam-Flag: NO
X-Spam-Score: -9.499
X-Spam-Level:
X-Spam-Status: No, score=-9.499 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.001, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, USER_IN_DEF_SPF_WL=-7.5] autolearn=ham autolearn_force=no
Authentication-Results: mail2.ietf.org (amavisd-new); dkim=pass (1024-bit key) header.d=chromium.org
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 IRJBR9ULeq5X for <tls@mail2.ietf.org>; Tue, 17 Jun 2025 11:16:38 -0700 (PDT)
Received: from mail-ed1-x52d.google.com (mail-ed1-x52d.google.com [IPv6:2a00:1450:4864:20::52d]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) key-exchange X25519 server-signature ECDSA (P-256) server-digest SHA256) (No client certificate requested) by mail2.ietf.org (Postfix) with ESMTPS id F182E3619771 for <tls@ietf.org>; Tue, 17 Jun 2025 11:16:37 -0700 (PDT)
Received: by mail-ed1-x52d.google.com with SMTP id 4fb4d7f45d1cf-607ea238c37so12748914a12.2 for <tls@ietf.org>; Tue, 17 Jun 2025 11:16:37 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; t=1750184197; x=1750788997; darn=ietf.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=+MXQrnNyWih1oqUqmyxU5jClT4MaTBagdpUHyIpjaEE=; b=EY7+WfbqA7XVAtLZUOxOM97/9vCADixa9w4RKfb+88u/Dtm6PXw1ga61HvpfJEFHws b7ZOst28aJYwJU5KWtgCZk2XvfJ6Mn6Xp5S06qzXKU2Q8a7DhR8vkIq56E40bvNOVdK7 qMNZfDclLN9ob9ZVAQccksBxrnlaWDxf50q0A=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1750184197; x=1750788997; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=+MXQrnNyWih1oqUqmyxU5jClT4MaTBagdpUHyIpjaEE=; b=qUnSa1fPckBVjeNKyFgP3t7IPPMML7Lfs32miw3Sc4UkscPNO7pLUTohcBhvIQwb8U SU2jvEZgkjIRBmxrBq+Qvfiikag6MaZ5PtoI74A7hsiCbxeON92J5FrnCIQjTBx6b9FF r07fBXca5POde/QifmOuxuSnly002+jTnqkwCVZCxmed+QqOPyCnsHLwSwYgcMfDTX69 NcA5OELlOdrjFHtRqEQ9z0fYjyOShQeEy3ChrpB8cgjy7x5xwQSdeLFP4DvJXq3gHUmu WMorStBp2XWLzVfQlR9RBy6L9lAvJP4e42CpRopUd8AVO6rZOu0C4QZFEoUvNh9oDQdA LcAQ==
X-Gm-Message-State: AOJu0YyAqXArW9aNv2gmRgwXPAHKWyLe1e+3oz+L9VVc6o4RH1VueigQ TDDJtlu+BtqORNaCW0CVRanzL5M4GZkPCM/zgg/tEkEydxgDvSItiCb5Zd4wC9rDXOaTlVy2GMj G0BDb8giU9mXyy5MIOA+YiAPhkUDPd1MNTK5Yzb2D/PR9qTd9FoNjNHY=
X-Gm-Gg: ASbGnctqh3h2cciy+Igka+QIVOx0VFx+XlfS/w5srOcNNgUvYakLJOPCpAW3qgb1V2d Y3hEaQBRTXMgEWuJsvkuiKBUQjxGG493vm1jdqVWGA5k8M70CaqC20cxf7Jt3917ir4aw2qCsFK Yao6gXsoRo+YMUrNnHgKxUI4dAK9h6NzqjszVIefs8vw==
X-Google-Smtp-Source: AGHT+IH4PZXlY6gHVtxiAoVjnA8jiesrZ0Ddp5Kmkw+Xlg/8yi26lF6w+0VRBpZM2UdqhSmhvcQ1W70vpeF6Ew5Q2zg=
X-Received: by 2002:a05:6402:1d4b:b0:5fc:9979:78f7 with SMTP id 4fb4d7f45d1cf-608d089192bmr13186178a12.14.1750184196469; Tue, 17 Jun 2025 11:16:36 -0700 (PDT)
MIME-Version: 1.0
References: <45jp5tle7ixk7xhc57j5extnhg772nhhguqp4arvuppjuotkdo@jq5vd74bdpbg>
In-Reply-To: <45jp5tle7ixk7xhc57j5extnhg772nhhguqp4arvuppjuotkdo@jq5vd74bdpbg>
From: David Benjamin <davidben@chromium.org>
Date: Tue, 17 Jun 2025 14:16:19 -0400
X-Gm-Features: AX0GCFthcV0Tj0h5WV7tni560-WHJQX6VkBT1MblRMMs11PeriFsS5aEgZRqMzk
Message-ID: <CAF8qwaAj8rYkRWatDuxmBQ+TQu7Yw1GPNm-Jf+W1CT0j18nwBg@mail.gmail.com>
To: Klaus Frank <draft-frank-mtls-via-serverauth-extension=40frank.fyi@dmarc.ietf.org>
Content-Type: multipart/alternative; boundary="0000000000005305480637c8833d"
Message-ID-Hash: AAYNM73AAAZC4XWXBZPT5TGYXN74IJSQ
X-Message-ID-Hash: AAYNM73AAAZC4XWXBZPT5TGYXN74IJSQ
X-MailFrom: davidben@google.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: 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/lteGdrNONeo7IoiCIAdB4mB4wbo>
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>

(As always, wearing an individual hat here. In particular, I am *not*
speaking on behalf of the Chrome Root Program.)

This draft is not the way to solve this problem.

The point of markers like EKUs is to avoid cross-protocol attacks. Client
and server here do not refer to abstract classifications of entities. They
are specific, well-defined roles in the TLS protocol. Whether the TLS
client represents a human or a backend service, it is a client as far as
TLS is concerned. This draft breaks this. TLS stacks that implement it risk
cross-protocol attacks.

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. This blog discusses some of this:
https://blog.mozilla.org/security/2021/05/10/beware-of-applications-misusing-root-stores/

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. 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:
https://github.com/cabforum/servercert/issues/599#issuecomment-2954343849
https://community.letsencrypt.org/t/do-not-remove-tls-client-auth-eku/237427/70
https://community.letsencrypt.org/t/do-not-remove-tls-client-auth-eku/237427/92

Separate hierarchies allow the policies around each to be tailored to the
needs of specific relying parties that support them. In the case of client
and server certificates, they’re already entirely separate roles in the
protocol, so there is no benefit in tying them together.

This goes in both directions. The Web PKI allows a service that speaks HTTP
on port 80 to obtain a certificate. (This is the ACME http-01 challenge.)
That makes sense for web servers. It might not make sense for arbitrary
backend-to-backend applications, where port 80 may be served by a less
trusted process. Web serving and backend-to-backend communication are
different applications, with different needs.

Hope that helps give some background on how TLS uses certificates!

David

On Tue, Jun 17, 2025 at 9:17 AM Klaus Frank
<draft-frank-mtls-via-serverauth-extension=40frank.fyi@dmarc.ietf.org>
wrote:

>
>
> Hi,
>
> because of recent events with policies of public CAs and associated
> "fallout" that removed the ability to get publicly trusted certificates
> with clientAuth for dNSName and ipAddress I've written this early draft of
> a now standard I'd like to propose. As this breaks any and all mutual TLS
> authentication between systems relying upon public trusted certificates
> (like XMPP, AD FS, or SMTP with mutual authentication, like e.g. the
> Microsoft Exchange Hybrid deployment uses) some solution is required.
>
> Within this draft I basically sharpen the definition of "id-pk-clientAuth"
> and "id-pk-serverAuth". "id-pk-clientAuth" should no longer be used for
> dNSName and ipAddress (aka device) certificates and instead a TLS-server
> should be allowed to accept a "id-pk-serverAuth" certificate. As long as it
> expects device-to-device authenticated sessions. This should also address
> the obscure and unspecified "security concerns" the Google Chrome team
> stated as reason for the policy change that caused any and all CAs to drop
> issuing clientAuth certificates. Even the ones that still issue
> certificates with the clientAuth flag set do NOT do so for devices and only
> for endusers and organizations (EV and OV).
>
> Besides that as also Lets Encrypt stopped including the clientAuth flag
> the only free and publicly trusted certificates available are of type
> id-pk-serverAuth". Therefore to keep systems relying upon the mutual
> authentication of TLS between servers operational it is necessary to allow
> servers to use id-pk-serverAuth certificates for TLS-Client Authentication.
> In addition I also tried to outline how a server should validate the
> received TLS certificates.
>
> The validation of the client certificate may currently be a bit too
> verbose and complex. The main goal is to do forward-confirmed reverse DNS
> lookup, allow for DANE/TLSA provided certificates, as well as services
> behind SVCB and SRV records (this part may be unnecessary and maybe can be
> scratched from the draft, I'm not entirely sure). I also provided steps for
> verifying the source port which may also be unnecessary.
>
> I would have hoped that we've more time on this matter, but as the first
> CAs already stopped issuing such certificate and the commonly used lets
> Encrypt certificates are not valid that long either this topic is kinda
> urgend. I'm open to alternative solutions though. It would be great to find
> some people to push this forward to at least have a standard to move over
> to. Instead of being left with a bunch of broken services.
>
> Sincerely,
> Klaus Frank
>
>
> Further links for the background of the above referenced policy change:
> * https://googlechrome.github.io/chromerootprogram/
> *
> https://community.letsencrypt.org/t/do-not-remove-tls-client-auth-eku/237427
> * https://github.com/processone/ejabberd/issues/4392
> * https://github.com/cabforum/servercert/issues/599
>
>
> A new version of Internet-Draft
> draft-frank-mtls-via-serverauth-extension-00.txt has been successfully
> submitted by Klaus Frank and posted to the
> IETF repository.
>
> Name:     draft-frank-mtls-via-serverauth-extension
> Revision: 00
> Title:    Allow using serverAuth certificates for mutual TLS (mTLS)
> authentication in server-to-server usages.
> Date:     2025-06-16
> Group:    Individual Submission
> Pages:    10
> URL:
> https://www.ietf.org/archive/id/draft-frank-mtls-via-serverauth-extension-00.txt
> Status:
> https://datatracker.ietf.org/doc/draft-frank-mtls-via-serverauth-extension/
> HTML:
> https://www.ietf.org/archive/id/draft-frank-mtls-via-serverauth-extension-00.html
> HTMLized:
> https://datatracker.ietf.org/doc/html/draft-frank-mtls-via-serverauth-extension
>
>
> Abstract:
>
>    This document aims to standardize the validation of mutual TLS
>    authentication between servers (server-to-server).  It outlines
>    recommended validation flows as well as provides practical design
>    recommendations.  Basically the EKU id-kp-clientAuth and id-kp-
>    serverAuth get more precisely defined to represent their common
>    understanding by issuing CAs and browsers.  id-kp-clientAuth aka.
>    "TLS WWW client authentication" SHOULD mean authentication of a
>    natural or legal entity.  id-kp-serverAuth aka.  "TLS WWW server
>    authetnication" SHOULD mean authentication of a device.  When two id-
>    kp-clientAuth certificates are used this means E2E authentication
>    between two users.  Where as two id-kp-serverAuth certificates being
>    used means server-to-server authentication.  And one user and one
>    server certificate within one TLS connection means client-to-server
>    (or technically also server-to-client).  The term "TLS-Client" SHOULD
>    no longer be used and mean the party sending the initial package
>    while establishing a TLS connection.  This helps to avoid design
>    issues moving forward as currently some people thought TLS-Client
>    auth was only ever used in "client-to-server" and never within
>    "server-to-server" context.  Which sparked the demand for this
>    document to begin with to keep server-to-server auth with public
>    trusted certificates working.
>
>
>
>
> _______________________________________________
> TLS mailing list -- tls@ietf.org
> To unsubscribe send an email to tls-leave@ietf.org
>