Internet-Draft | mtls-via-serverauth-extension | June 2025 |
Frank | Expires 18 December 2025 | [Page] |
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.¶
This Internet-Draft is submitted in full conformance with the provisions of BCP 78 and BCP 79.¶
Internet-Drafts are working documents of the Internet Engineering Task Force (IETF). Note that other groups may also distribute working documents as Internet-Drafts. The list of current Internet-Drafts is at https://datatracker.ietf.org/drafts/current/.¶
Internet-Drafts are draft documents valid for a maximum of six months and may be updated, replaced, or obsoleted by other documents at any time. It is inappropriate to use Internet-Drafts as reference material or to cite them other than as "work in progress."¶
This Internet-Draft will expire on 18 December 2025.¶
Copyright (c) 2025 IETF Trust and the persons identified as the document authors. All rights reserved.¶
This document is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents (https://trustee.ietf.org/license-info) in effect on the date of publication of this document. Please review these documents carefully, as they describe your rights and restrictions with respect to this document. Code Components extracted from this document must include Revised BSD License text as described in Section 4.e of the Trust Legal Provisions and are provided without warranty as described in the Revised BSD License.¶
Recently public CAs have stopped issuing certificates with both clientAuth and serverAuth from the common web root of trust because of a change in the Chrome Root Program Policy. Some CAs still issue client auth certificates but only towards invididuals and none towards domain names (dNSNames). But even their usage is questionable as they're no longer issued by the an signing CA within the same trust hirarchy. Furthermore the policy now also states that going forward all certificates containing both clientAuth and serverAuth will be considered invalid. Because of this there are now new challanges for server-to-server usages. This document aims to address this by relaxing the validation requirements for TLS Clientauthentication within the server-to-server usecase. In addition this document also provides some standardized validation flows which formerly weren't formally standardized.¶
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in BCP 14 [RFC2119],[RFC8174] when, and only when, they appear in all capitals, as shown here.¶
The reader should be familiar with the terms defined in [RFC5280] and [RFC8446]¶
Section 4.2.1.12 of [RFC5280] is extended by:¶
NEW:¶
"TLS WWW client authentication" SHOULD mean authentication of a natural or legal entity. "TLS WWW server authetnication" SHOULD mean authentication of a device e.g. client-to-server or server-to-server A certificate with either (or both) of these options MAY be used for either side of a TLS-connection. A server expecting only end user authentication SHOULD decline id-kp-serverAuth certificates and one only expecting server-to-server connections SHOULD decline id-kp-clientAuth certificates. The server SHOULD validate the certificate it received from the TLS connection establishing party (TLS-Client) according to draft-frank-mtls-via-serverAuth-extension.¶
The following mutual authentication scenarious should be differentiated¶
+-----------------+ +----------------+ | Server-A | <====> | Server-B | +-----------------+ +----------------+
Figure 1 shows a minimal deployment with two servers.¶
In the most basic case the authentication is performed between two servers directly. This case can be further split into:¶
Where some of these MAY be able to use an internal, private, or enterprise CA this does not apply to all usages. E.g. XMPP servers commonly use mutual TLS but the other parties are not necessarily known beforehand. The same applies to some extend also to SMTP relays between different organizations. The desired level of assurance in these cases is not authentication as in associating a session to a specific user but more generic the same as when a server identifies itself to a end user, to ensure both parties are who they claim to be. e.g. server-a.example.com communicating with server-b.example.com¶
A slightly more advanced usage is when a 3rd server, like a load-balancer is present within the connection.¶
+-----------------+ +----------------+ +----------------+ | Server-A | <====> | Server-B | <====> | Server-C | +-----------------+ +----------------+ +----------------+
Figure 2: An extension of Figure 1 with one more server behind Server-B which serves as load balancer.¶
In this setup it can be differentiated between these scenarious:¶
The validation of the TLS certificate received by the connection initiating party is already sufficiently specified within the original RFCs. However the validation of the certificate received from the client by the server is not. Because this document focuses on the server-to-server usage it is possible to specify the validation criteria in more detail:¶
A special thanks goes to everyone participating in the discussion on the mailing lists as well as Mohamed Boucadair for proofreading, suggested changes, and helping with the submission process itself.¶