<?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.5 (Ruby 3.0.2) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-jhoyla-req-mtls-flag-02" category="info" consensus="true" submissionType="IETF" number="0" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.19.4 -->
  <link href="https://datatracker.ietf.org/doc/draft-jhoyla-req-mtls-flag-02" rel="prev"/>
  <front>
    <title>TLS Flag - Request mTLS</title>
    <seriesInfo name="RFC" value="0"/>
    <author fullname="Jonathan Hoyland">
      <organization>Cloudflare</organization>
      <address>
        <email>jonathan.hoyland@gmail.com</email>
      </address>
    </author>
    <date year="2025" month="February"/>
    <abstract>
      <?line 32?>

<t>Normally in TLS there is no way for the client to signal to the server that it
has been configured with a certificate suitable for mTLS. This document defines
a TLS Flag <xref target="I-D.ietf-tls-tlsflags"/> that enables clients to provide this hint.</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        The latest revision of this draft can be found at <eref target="https://jhoyla.github.io/draft-jhoyla-req-mtls-flag/draft-jhoyla-req-mtls-flag.html"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-jhoyla-req-mtls-flag/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/jhoyla/draft-jhoyla-req-mtls-flag"/>.</t>
    </note>
  </front>
  <middle>
    <?line 39?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>This document specifies a TLS Flag that indicates to the server that the client
supports mTLS. Sometimes a server does not want to negotiate mTLS with every
client, but might wish to authenticate a subset of them. In TLS 1.3 this may be
done with post-handshake auth, however this adds an extra round-trip, and
requires negotiation at the application layer. A client sending the request
mTLS flag in the ClientHello allows the server to request authentication during
the initial handshake only when it receives a hint the client supports it. This
enables a number of use cases, for example allowing bots to authenticate
themselves when mixed in with general traffic.</t>
    </section>
    <section anchor="conventions-and-definitions">
      <name>Conventions and Definitions</name>
      <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="flag-specification">
      <name>Flag specification</name>
      <t>A server receiving this flag <bcp14>MAY</bcp14> send a CertificateRequest message.</t>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>This flag should have no effect on the security of TLS, as the server may always
send a CertificateRequest message during the handshake. This flag merely
provides a hint that the client will be able to fulfil the request. If the
client sets this flag but then fails to provide a certificate the server <bcp14>MAY</bcp14>
terminate the connection with a bad_certificate error.</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>This document requests IANA to add an entry to the TLS Flags registry in the TLS
namespace with the following values:</t>
      <ul spacing="normal">
        <li>
          <t>Value shall be TBD</t>
        </li>
        <li>
          <t>Flag Name shall be request_mtls.</t>
        </li>
        <li>
          <t>Message shall be CH</t>
        </li>
        <li>
          <t>Recommended shall be set to no (N)</t>
        </li>
        <li>
          <t>The reference shall be this document {!draft-jhoyla-req-mtls}</t>
        </li>
      </ul>
    </section>
  </middle>
  <back>
    <references anchor="sec-normative-references">
      <name>Normative References</name>
      <reference anchor="I-D.ietf-tls-tlsflags">
        <front>
          <title>A Flags Extension for TLS 1.3</title>
          <author fullname="Yoav Nir" initials="Y." surname="Nir">
            <organization>Dell Technologies</organization>
          </author>
          <date day="13" month="September" year="2024"/>
          <abstract>
            <t>   A number of extensions are proposed in the TLS working group that
   carry no interesting information except the 1-bit indication that a
   certain optional feature is supported.  Such extensions take 4 octets
   each.  This document defines a flags extension that can provide such
   indications at an average marginal cost of 1 bit each.  More
   precisely, it provides as many flag extensions as needed at 4 + the
   order of the last set bit divided by 8.

            </t>
          </abstract>
        </front>
        <seriesInfo name="Internet-Draft" value="draft-ietf-tls-tlsflags-14"/>
      </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>
    </references>
    <?line 98?>

<section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>TODO acknowledge.</t>
    </section>
  </back>
  <!-- ##markdown-source:
H4sIAAAAAAAAA4VWbXMbNRD+rl8hzBdgcnaTlqF4CtR1EhImLyVxYRiGYeS7
ta1GJx2Szq7p9L/wW/hlPCud3yDAhzh3q93V7rPP7l5RFCLqaGgoe5Ore3lu
1FwW8o5+aylEWUPWE6WKNHd+PZTazpwQlSutqmFSeTWLxduFWxtVePqtqKMJ
xQw+iicnIrTTWoegnY3rBtqXZ5NzKT+WygSH67StqCH82Ng7kj2qdHReK8Mv
l6NX+Oc8nu4m5z1h23pKfiifiAqxDOXJ54MnJ4OT56J0NpANbRjK6FsSy6F8
KnCFJzWU92djPK+cf5h71zZDyRn+iFdt5/JbFokl2ZaG0JI7FX7LER/qQlwr
bXCTCS81xVnf+TlLlS8XQ7mIsQnDwYB1WKKX1N9oDVgwmHq3CjSA+UDgQh0X
7RRAZPwG/w5mD9oGeYcI7c01WbGfvfS1+w/7/zjqL2JtekKoNi6cHwpZ4C4p
Z60xucTfOaviQll5wca2SsfISFn9u4qo7VCOjWsrOPOUDimD9LYz7C+y4cs5
y/ulq4WwztcwXgJ5wZTavYmiKKSahuhVGYW44SNj1iBeKl5ckCepg7ROrtRa
wpRlsjQaNJLRyaDnVhl+YnkgvyRWUVHqKBYqyCmRlaDNTM9bT5VcAUCpZEk+
6plmqsvQ6qimhpJ7boG+nCxwKXjf1nxPRTNtKQgltz3z/v1Hl8VpKnjB4OKP
8Q0fPuTbybLH0EUaOMDGu6WuCOfwvdA29rv8a11VhgSodWmjd1VbMtBCHAYR
GioRMXzuhZEztVVKJDwGww4uNGjTOI9gco73rqao6+Sws6gcMdYRYGd4LQZB
1AwS22TwCJprkX0eyWmLsaHnC9josGAb5haOMrZw3U4DRelmHErdR44p/OP+
04xEjbpOCUPGUvbfuBALMKkKC/VAyd2RXLgV5ZxgoqoKP1bSO/BGolltVUSv
myPJjAXhW+05kS54gCk7JFTTGA6MRUatyfflaMMmDJaKu5/1fB6IImXNhWVG
8sE46V6QMUgUP6twgLjbWO6jwJdVrYdvwbraakRl5C5FZ0H5FdRBWjgoCc3B
VWGS7PN9W0AdM0XFhmZK5pHJMLcBBipQOEqEpneqbkDuFC3nN3WZj/t14sDq
QIbvTYHU+h2aBUmnkszJkuc2w2BB0/SZq2Nnl2yOicywy1NuEp3embokH2jN
wxil6l2/uZ/wnOf/8uY2Pd+dff/m8u7slJ/vL0ZXV9sH0WncX9y+uTrdPe0s
x7fX12c3p9kYUnkgEr3r0U+9RAbZu309uby9GV31cgX3OwoTjHGYckki+cZT
RM4qiIpC6fU0A/Bq/PrPP46fccffnY9Pjo+/RI/nl+fHXzzDCwOWb9sW8ojL
thagGynPXoA+itJg0BjUBXMpgNFW8nwDmp/9zMj8MpQvpmVz/OzrTsAJHwg3
mB0IE2b/lPzDOIP4iOiRa7ZoHsj/hvRhvKOfDt43uO8JX3xjMEZlcfz8m68F
UyiNsG6u5T4RYrTppdwHuSFRtdSEuCS1Kfg+3g3w7dcLhaDmlNh5TyU6Lq6Z
pgFT16stMzfOUIHWVGjDJfF+odmMSswp2zV0Z4+GwgxIJdtrdB5aymAlBfG/
8XS9n8y3Pd+tmBRIDRKYtej2w17jH4xvdCI4BLKmVQXeYmnPtNkfVxiuacqK
7UTjTt/ew6OaW17OsJkPVtLhPtzLE4ALtEat7eYAq9RSWlCbVTpV1a/75uS9
86kIl6Ob0eMF2PZgF3nIujyVqiqNdmzC9WafbdZdgPpcBz7pxjF/vvGHS2hU
2a0PFs/cZtgtlYF/fGl8Jn/gR1RdZRgnr04hTBS8gYfdQRfSr/zR1IfKdVfG
rcL4AtI7wqdNzd+z1e6EFx1vTSc/ufkUSpNUmxnqa8s9B4dj6P1Hj36vfcgf
B1NVPjCWo/LBupWhas5GQbwf5olP1Ve9GYYK9WAwuT29lWqriVb4C8bjp+7x
CwAA

-->

</rfc>
