<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.29 (Ruby 3.4.4) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-wimse-mutual-tls-00" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.31.0 -->
  <front>
    <title abbrev="Workload MTLS">Workload Authentication Using Mutual TLS</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-wimse-mutual-tls-00"/>
    <author initials="" surname="j Salowey" fullname="Joe Salowey">
      <organization>CyberArk</organization>
      <address>
        <email>joe@salowey.net</email>
      </address>
    </author>
    <author initials="Y." surname="Rosomakho" fullname="Yaroslav Rosomakho">
      <organization>Zscaler</organization>
      <address>
        <email>yaroslavros@gmail.com</email>
      </address>
    </author>
    <date year="2025" month="November" day="02"/>
    <area>Applications and Real-Time</area>
    <workgroup>Workload Identity in Multi System Environments</workgroup>
    <keyword>workload</keyword>
    <keyword>identity</keyword>
    <abstract>
      <?line 40?>

<t>The WIMSE architecture defines authentication and authorization for software workloads in a variety of runtime environments, from the most basic ones to complex multi-service, multi-cloud, multi-tenant deployments. This document profiles a workload authentication based on X.509 workload identity certificates using mutual TLS (mTLS).</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        The latest revision of this draft can be found at <eref target="https://ietf-wg-wimse.github.io/draft-ietf-wimse-s2s-protocol/draft-ietf-wimsemutual-tls.html"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-ietf-wimse-mutual-tls/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        Workload Identity in Multi System Environments Working Group mailing list (<eref target="mailto:wimse@ietf.org"/>),
        which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/wimse/"/>.
        Subscribe at <eref target="https://www.ietf.org/mailman/listinfo/wimse/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/ietf-wg-wimse/draft-ietf-wimse-s2s-protocol"/>.</t>
    </note>
  </front>
  <middle>
    <?line 44?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>This document defines authentication and authorization in the context of interaction between two workloads.
This is the core component of the WIMSE architecture <xref target="I-D.ietf-wimse-arch"/>.
This document focuses on using X.509 workload identity certificates <xref target="I-D.ietf-wimse-workload-creds"/> to authenticate the communication between workloads using TLS.</t>
      <t>The use of TLS for authentication is widely deployed, however it may not be applicable to all environments.  For example, some deployments may lack the PKI infrastructure necessary to manage certificates or inter-service communication consists of multiple separate TLS hops. For these cases, other options based on Workload Identity Tokens (WIT) <xref target="I-D.ietf-wimse-workload-creds"/> may be more appropriate since they are not based on X.509 certificates and are communicated at the application layer rather than the transport layer.</t>
      <section anchor="deployment-architecture-and-message-flow">
        <name>Deployment Architecture and Message Flow</name>
        <t>Refer to Sec. 1.2 of <xref target="I-D.ietf-wimse-workload-creds"/> for the deployment architecture which is common to all three
protection options, including the one described here.</t>
      </section>
      <section anchor="workload-identity-certificates">
        <name>Workload Identity Certificates</name>
        <t>Workload identity certificates are X.509 certificates that carry workload identifiers as described in section 4.1 of <xref target="I-D.ietf-wimse-workload-creds"/></t>
      </section>
    </section>
    <section anchor="conventions-and-definitions">
      <name>Conventions and Definitions</name>
      <t>All terminology in this document follows <xref target="I-D.ietf-wimse-arch"/>.</t>
      <t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>
      <?line -18?>

</section>
    <section anchor="mutual-tls">
      <name>Using Mutual TLS for Workload-to-Workload Authentication</name>
      <t>As noted in the introduction, for many deployments, transport-level protection of application traffic using TLS is ideal.</t>
      <section anchor="to-wic">
        <name>The Workload Identity Certificate</name>
        <t>Workload identity certificates are X.509 certificates that carry workload identifiers as described in section 4.1 of <xref target="I-D.ietf-wimse-workload-creds"/></t>
      </section>
      <section anchor="wic-validation">
        <name>Workload Identity Certificate Validation</name>
        <t>Workload Identity Certificates may be used to authenticate both the server and client side of the connections.  When validating a Workload Identity Certificate, the relying party <bcp14>MUST</bcp14> use the trust anchors configured for the trust domain in the workload identity to validate the peer's certificate.  Other PKIX <xref target="RFC5280"/> path validation rules apply. Workloads acting as TLS clients and servers <bcp14>MUST</bcp14> validate that the trust domain portion of the Workload Identity Certificate matches the expected trust domain for the other side of the connection.</t>
        <t>Servers wishing to use the Workload Identity Certificate for authorizing the client <bcp14>MUST</bcp14> require client certificate authentication in the TLS handshake. Other methods of post handshake authentication are not specified by this document.</t>
        <t>Workload Identity Certificates used by TLS servers <bcp14>SHOULD</bcp14> have the <tt>id-kp-serverAuth</tt> extended key usage <xref target="RFC5280"/> field set and Workload Identity Certificates used by TLS clients <bcp14>SHOULD</bcp14> have the <tt>id-kp-clientAuth</tt> extended key usage field set. A certificate that is used for both client and server connections may have both fields set. This specification does not make any other requirements beyond <xref target="RFC5280"/> on the contents of Workload Identity Certificates or on the certification authorities that issue workload certificates.</t>
        <section anchor="server-name">
          <name>Server Name Validation</name>
          <t>If the WIMSE client uses a hostname to connect to the server and the server certificate contain a DNS SAN the client <bcp14>MUST</bcp14> perform standard host name validation (<xref section="6.3" sectionFormat="of" target="RFC9525"/>) unless it is configured with the additional information necessary to perform alternate validation of the peer's workload identity.
If the client did not perform standard host name validation then the WIMSE client <bcp14>SHOULD</bcp14> further use the workload identifier to validate the server.
The host portion of the workload identifier is NOT treated as a host name as specified in section 6.4 of <xref target="RFC9525"/> but rather as a trust domain. The server identity is encoded in the path portion of the workload identifier in a deployment specific way.
Validating the workload identity could be a simple match on the trust domain and path portions of the identifier or validation may be based on the specific details on how the identifier is constructed. The path portion of the WIMSE identifier <bcp14>MUST</bcp14> always be considered in the scope of the trust domain.
In most cases it is preferable to validate the entire workload identifier, see section 1.3 of <xref target="I-D.ietf-wimse-workload-creds"/> for additional implementation advice.</t>
        </section>
      </section>
      <section anchor="client-name">
        <name>Client Authorization Using the Workload Identity</name>
        <t>The server application retrieves the workload identifier from the client certificate subjectAltName, which in turn is obtained from the TLS layer. The identifier is used in authorization, accounting and auditing.
For example, the full workload identifier may be matched against ACLs to authorize actions requested by the peer and the identifier may be included in log messages to associate actions to the client workload for audit purposes.
A deployment may specify other authorization policies based on the specific details of how the workload identifier is constructed. The path portion of the workload identifier <bcp14>MUST</bcp14> always be considered in the scope of the trust domain.
See section 1.3 of <xref target="I-D.ietf-wimse-workload-creds"/> on additional security implications of workload identifiers.</t>
      </section>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>This document does not include any IANA considerations.</t>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>ToDo: perhaps some discussion of certificate lifetimes and their implications, various server name validation choices, implications of middle boxes, etc.</t>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="I-D.ietf-wimse-workload-creds">
          <front>
            <title>*** BROKEN REFERENCE ***</title>
            <author>
              <organization/>
            </author>
            <date/>
          </front>
        </reference>
        <reference anchor="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner"/>
            <date month="March" year="1997"/>
            <abstract>
              <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <date month="May" year="2017"/>
            <abstract>
              <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
        <reference anchor="RFC5280">
          <front>
            <title>Internet X.509 Public Key Infrastructure Certificate and Certificate Revocation List (CRL) Profile</title>
            <author fullname="D. Cooper" initials="D." surname="Cooper"/>
            <author fullname="S. Santesson" initials="S." surname="Santesson"/>
            <author fullname="S. Farrell" initials="S." surname="Farrell"/>
            <author fullname="S. Boeyen" initials="S." surname="Boeyen"/>
            <author fullname="R. Housley" initials="R." surname="Housley"/>
            <author fullname="W. Polk" initials="W." surname="Polk"/>
            <date month="May" year="2008"/>
            <abstract>
              <t>This memo profiles the X.509 v3 certificate and X.509 v2 certificate revocation list (CRL) for use in the Internet. An overview of this approach and model is provided as an introduction. The X.509 v3 certificate format is described in detail, with additional information regarding the format and semantics of Internet name forms. Standard certificate extensions are described and two Internet-specific extensions are defined. A set of required certificate extensions is specified. The X.509 v2 CRL format is described in detail along with standard and Internet-specific extensions. An algorithm for X.509 certification path validation is described. An ASN.1 module and examples are provided in the appendices. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5280"/>
          <seriesInfo name="DOI" value="10.17487/RFC5280"/>
        </reference>
        <reference anchor="RFC9525">
          <front>
            <title>Service Identity in TLS</title>
            <author fullname="P. Saint-Andre" initials="P." surname="Saint-Andre"/>
            <author fullname="R. Salz" initials="R." surname="Salz"/>
            <date month="November" year="2023"/>
            <abstract>
              <t>Many application technologies enable secure communication between two entities by means of Transport Layer Security (TLS) with Internet Public Key Infrastructure using X.509 (PKIX) certificates. This document specifies procedures for representing and verifying the identity of application services in such interactions.</t>
              <t>This document obsoletes RFC 6125.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9525"/>
          <seriesInfo name="DOI" value="10.17487/RFC9525"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="I-D.ietf-wimse-arch">
          <front>
            <title>Workload Identity in a Multi System Environment (WIMSE) Architecture</title>
            <author fullname="Joseph A. Salowey" initials="J. A." surname="Salowey">
              <organization>CyberArk</organization>
            </author>
            <author fullname="Yaroslav Rosomakho" initials="Y." surname="Rosomakho">
              <organization>Zscaler</organization>
            </author>
            <author fullname="Hannes Tschofenig" initials="H." surname="Tschofenig">
              <organization>University of Applied Sciences Bonn-Rhein-Sieg</organization>
            </author>
            <date day="30" month="September" year="2025"/>
            <abstract>
              <t>   The increasing prevalence of cloud computing and micro service
   architectures has led to the rise of complex software functions being
   built and deployed as workloads, where a workload is defined as a
   running instance of software executing for a specific purpose.  This
   document discusses an architecture for designing and standardizing
   protocols and payloads for conveying workload identity and security
   context information.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-wimse-arch-06"/>
        </reference>
      </references>
    </references>
    <?line 126?>

<section anchor="document-history">
      <name>Document History</name>
      <t><cref>RFC Editor: please remove before publication.</cref></t>
      <section anchor="draft-ietf-wimse-mutual-tls-00">
        <name>draft-ietf-wimse-mutual-tls-00</name>
        <ul spacing="normal">
          <li>
            <t>Initial version, extracted from the draft-ietf-wimse-s2s-protocol-07 S2s draft with minimal edits.</t>
          </li>
          <li>
            <t>added security consideration for Server Name Validation</t>
          </li>
        </ul>
      </section>
    </section>
    <section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>We thank Yaron Sheffer, Arndt Schwenkschuster, Brian Campbell,  and Daniel Feldman for their contributions to earlier versions of this document.</t>
    </section>
  </back>
  <!-- ##markdown-source:
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
dtYeAAA=

-->

</rfc>
