<?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.2.2) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-jhoyla-req-mtls-flag-01" 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-01" 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="2023" month="October"/>
    <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="23" month="July" year="2023"/>
          <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-12"/>
      </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:
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
CwAA

-->

</rfc>
