<?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.1 (Ruby 3.0.2) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-jhoyla-req-mtls-flag-00" category="info" consensus="true" submissionType="IETF" number="0" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.18.2 -->
  <link href="https://datatracker.ietf.org/doc/draft-jhoyla-req-mtls-flag-00" 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"/></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.</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 96?>

<section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>TODO acknowledge.</t>
    </section>
  </back>
  <!-- ##markdown-source:
H4sIAAAAAAAAA4VW23LbNhB9x1ds1Jc2Y0pRnJmmnDSJItu1O76kttJOptPJ
gORSRAwCDABKVT3+l35Lv6y7IHVL3PTBMrDYXQBnzx4wSRIRVNCYwmB2fgMn
Ws4hgWv81KIPUJNtIHIZcG7dKgVlSitEYXMjawopnCxD8rGyKy0Th5+SOmif
lJQjefJE+DarlffKmrBqyPvseHYC8A1I7S1tp0yBDdKPCYMDGGChgnVKap6c
Td7QP+todD07GQjT1hm6FJ6Igs6SwtPD0fjJ6OmhyK3xaHzrUwiuRbFI4VDQ
Fg5lCjfHUxovrbudO9s2KfANf6OpMnP4iU1igabFlLxg68Kz7sT7vmSupdK0
k/avFYZyaN2crdLlVQpVCI1PRyP2YYta4HDtNWLDKHN26XFE4SNBG6pQtRkB
0eE3+m8wB+St6d4+kPd6m85x2GUZKvuV+K8sDatQ64EQsg2VdamAhPYCKFut
uxL/bI0MlTRwysGmiMt0I2nUXzJQbVOYatsWlMxhXMQOpI994LDqAl/P2T7M
bS2Esa6m4AUhL5hS25lIkgRk5oOTeRDikpe0XhHxYvFChQ5BeTAWlnIFFMo2
yLUiGkGw4NXcSM0jtnt0C2QXGUAFUUkPGaIBok2p5q3DApYEIEjI0QVVKqY6
+FYFmWmM6bkFhjCraFPifVvzPgWWyqAXEjY9c3f36Cw5igVPGFz6Y3z9/X1/
qVoVhUZBfDkzwdmizRk9IfYz+wZzOgZ62MndHd8U8XT+obttMaCuaxrrgu8P
fmNrDKqOCfuIwiIDGAjBDjND3R0U35xjOkSQPFeiy3kAWUtaoOYVxShfcQwT
hpY6wCh1m3kMYEs+Sj2kO8bjj4eHZKAL1lSsDEk5DHb5G+tDQvQofCVvMaY7
gMousbsThciioB8D+CeRAagDTZEEp5oDYBoSi1vl+CL94QlM6JGQTaP5YGzS
coVuCJM1RUgtCm5p9nOdyol4a64W04wXptH3FLWmi9LP0u8hbteRuyjwZkXr
KLdgX2UUnUrD9orWEI+X5E5MpAQ5EuO5KpUyuwWETQFVGDJdptYseA9SOr45
HDH5VJwzexBuccUiR2gNLt7dzFg/+T9cXsXx9fEv786uj494fHM6OT/fDETv
cXN69e78aDvaRk6vLi6OL4+6YLLCnkkMLibvB7EeMLh6Ozu7upycDzoQd0lN
ysCgZYxKQNc4DNR40osCfe5URhOKeTN9+8/f42fcSdcn06fj8Q/39/3k+fj7
ZzRh8LrdNlgeMHIrQRVH6TgLlQty2VADa0++HjyRygDrBqH5+HdG5o8UXmR5
M372sjfwhfeMa8z2jBGzLy1fBHcgPmB6YJsNmnv2z5DeP+/k/d58jfuO8cUr
TfIEyfj5q5eCKRRVpJeWjqpCTNZ07qjY9QRVLfYBbRI7heg53Qrj5qsAvZdz
jOy8wZxIH1ZMU68KdHLDzHUyqkCrC+qEBbJuY1liTlJh+p7q40k6qA1jyXZ6
jXVDapJ6L/73PH37xfBN2/XSHQ9SEwn0SjTOLuikO723p6CkT8QhImt8Aoi3
9BiWSu8qBulbFDqxEZXgd9BjtWRdgJJevKjX/ZafvTM79yTABbVGrcx6gZ4o
g/GNWD9RmSw+7Iajc9bFIpxNLicPF2DTg/3JfefLAl4UUV3pMVqtn5T1i+PJ
fa48r/SKyJ9F/EHgG5n3Cs7m0rI6MugLqSk/veCP4VceUtVlB+PszREZIwUv
KcN2oT/SB/4YGZLLRV/GjcP0lKzXSJ8MNX8nFtsVfmv44bLw7eV35DSLtSmp
vibfSbAvQ3ePHvwOuu/e50zmt4zlJL81dqmxmHOQF3dp9/GJxY+DkkQFBxQw
uzq6ArnxpFb4F7y6VwJJCwAA

-->

</rfc>
