<?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-rosomakho-tls-cert-update-00" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.29.0 -->
  <front>
    <title abbrev="Certificate Update in TLS 1.3">Certificate Update in TLS 1.3</title>
    <seriesInfo name="Internet-Draft" value="draft-rosomakho-tls-cert-update-00"/>
    <author fullname="Yaroslav Rosomakho">
      <organization>Zscaler</organization>
      <address>
        <email>yrosomakho@zscaler.com</email>
      </address>
    </author>
    <author fullname="Tirumaleswar Reddy">
      <organization>Nokia</organization>
      <address>
        <postal>
          <city>Bangalore</city>
          <region>Karnataka</region>
          <country>India</country>
        </postal>
        <email>kondtir@gmail.com</email>
      </address>
    </author>
    <date year="2025" month="June" day="20"/>
    <area/>
    <workgroup>Transport Layer Security</workgroup>
    <abstract>
      <?line 40?>

<t>This document defines a mechanism that enables TLS 1.3 endpoints to update their certificates during the lifetime of a connection using Exported Authenticators. A new extension is introduced to negotiate support for certificate update at handshake time. When negotiated, either endpoint can provide a post-handshake authenticator containing an updated certificate, delivered via a new handshake message. This mechanism allows long-lived TLS connections to remain valid across certificate rotations without requiring session termination.</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        The latest revision of this draft can be found at <eref target="https://yaroslavros.github.io/draft-tls-cert-refresh/draft-rosomakho-tls-cert-update.html"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-rosomakho-tls-cert-update/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        Transport Layer Security  mailing list (<eref target="mailto:tls@ietf.org"/>),
        which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/tls/"/>.
        Subscribe at <eref target="https://www.ietf.org/mailman/listinfo/tls/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/yaroslavros/draft-tls-cert-refresh"/>.</t>
    </note>
  </front>
  <middle>
    <?line 44?>

<section anchor="introduction">
      <name>Introduction</name>
      <t><xref target="TLS"/> provides strong guarantees of confidentiality, integrity, and authentication, but does not include a general-purpose mechanism for updating certificates of both endpoints after the handshake. While TLS 1.3 permits post-handshake authentication for clients as defined in <xref section="4.6.2" sectionFormat="of" target="TLS"/>, it provides no standardized way for servers to update their certificates once the handshake is complete. Additionally, TLS 1.3 post-handshake authentication is explicitly prohibited from QUIC according to <xref section="4.4" sectionFormat="of" target="QUIC-TLS"/> and HTTP/2 according to <xref section="2" sectionFormat="of" target="HTTP2-TLS13"/> because it allows clients to introduce new certificates and change authorization properties of the connection.</t>
      <t>This presents a limitation for long-lived connections in environments where certificates may need to be refreshed, whether due to expiration, revocation, or key rotation. Terminating and re-establishing connections solely for the purpose of updating certificates can be disruptive and inefficient.</t>
      <t>Exported Authenticators <xref target="EXPORTED-AUTH"/> offer a general-purpose mechanism for proving possession of a certificate after the handshake, using an authenticator request supplied by the peer. However, the specification does not define a mechanism for transmitting authenticator requests or delivering authenticators at the TLS layer.</t>
      <t>This document defines a mechanism for certificate updates within an established TLS 1.3 connection. It introduces a new extension, <tt>certificate_update_request</tt>, that allows each endpoint to optionally include an authenticator request as part of the initial handshake. This request can later be used by the peer to generate an Exported Authenticator containing an update certificate.</t>
      <t>To deliver the updated certificate, a new TLS handshake message, <tt>CertificateUpdate</tt>, is defined. This message carries a complete Exported Authenticator and may be sent by either endpoint after the handshake, as long as an authenticator request was previously provided by the peer.</t>
      <t>Because authenticator requests are single-use and may not be reused in subsequent authenticator constructions, a second post-handshake message is defined: <tt>CertificateUpdateRequest</tt>. This message allows an endpoint to provide a new authenticator request for future use after processing a <tt>CertificateUpdate</tt>.</t>
      <t>This approach allows TLS connections to remain valid across certificate updates without requiring session termination. It is compatible with TLS 1.3 and <xref target="QUIC"/>, and can be used regardless of the application protocol encapsulated within the connection.</t>
      <t>The certificate update mechanism in the document is deliberately constrained to preserve the authentication and authorization context of the connection. The updated certificate must retain the same subject, attributes, and issuing certificate authority as the original, with the only permitted difference being the validity period. This ensures that the peer identity remains unchanged and that application-layer authorization decisions based on the original certificate continue to hold after the update. By limiting the scope of updates in this way, the mechanism provides secure and seamless certificate refresh without altering the security properties of the TLS session.</t>
      <section anchor="certificate-update-flow">
        <name>Certificate Update flow</name>
        <t>Diagram below illustrates the certificate update process:</t>
        <figure anchor="fig-server-cert-update">
          <name>Certificate Update Process</name>
          <artset>
            <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="576" width="608" viewBox="0 0 608 576" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
                <path d="M 48,64 L 48,112" fill="none" stroke="black"/>
                <path d="M 48,240 L 48,272" fill="none" stroke="black"/>
                <path d="M 504,320 L 504,352" fill="none" stroke="black"/>
                <path d="M 504,432 L 504,464" fill="none" stroke="black"/>
                <path d="M 512,128 L 512,208" fill="none" stroke="black"/>
                <path d="M 256,96 L 320,96" fill="none" stroke="black"/>
                <path d="M 256,224 L 320,224" fill="none" stroke="black"/>
                <path d="M 256,272 L 320,272" fill="none" stroke="black"/>
                <path d="M 256,288 L 320,288" fill="none" stroke="black"/>
                <path d="M 256,320 L 320,320" fill="none" stroke="black"/>
                <path d="M 256,352 L 320,352" fill="none" stroke="black"/>
                <path d="M 256,400 L 320,400" fill="none" stroke="black"/>
                <path d="M 256,432 L 320,432" fill="none" stroke="black"/>
                <path d="M 256,464 L 320,464" fill="none" stroke="black"/>
                <path d="M 256,496 L 320,496" fill="none" stroke="black"/>
                <polygon class="arrowhead" points="520,208 508,202.4 508,213.6" fill="black" transform="rotate(90,512,208)"/>
                <polygon class="arrowhead" points="520,168 508,162.4 508,173.6" fill="black" transform="rotate(270,512,168)"/>
                <polygon class="arrowhead" points="520,168 508,162.4 508,173.6" fill="black" transform="rotate(90,512,168)"/>
                <polygon class="arrowhead" points="520,128 508,122.4 508,133.6" fill="black" transform="rotate(270,512,128)"/>
                <polygon class="arrowhead" points="512,464 500,458.4 500,469.6" fill="black" transform="rotate(90,504,464)"/>
                <polygon class="arrowhead" points="512,432 500,426.4 500,437.6" fill="black" transform="rotate(270,504,432)"/>
                <polygon class="arrowhead" points="512,352 500,346.4 500,357.6" fill="black" transform="rotate(90,504,352)"/>
                <polygon class="arrowhead" points="512,320 500,314.4 500,325.6" fill="black" transform="rotate(270,504,320)"/>
                <polygon class="arrowhead" points="328,496 316,490.4 316,501.6" fill="black" transform="rotate(0,320,496)"/>
                <polygon class="arrowhead" points="328,432 316,426.4 316,437.6" fill="black" transform="rotate(0,320,432)"/>
                <polygon class="arrowhead" points="328,400 316,394.4 316,405.6" fill="black" transform="rotate(0,320,400)"/>
                <polygon class="arrowhead" points="328,352 316,346.4 316,357.6" fill="black" transform="rotate(0,320,352)"/>
                <polygon class="arrowhead" points="328,288 316,282.4 316,293.6" fill="black" transform="rotate(0,320,288)"/>
                <polygon class="arrowhead" points="328,272 316,266.4 316,277.6" fill="black" transform="rotate(0,320,272)"/>
                <polygon class="arrowhead" points="328,96 316,90.4 316,101.6" fill="black" transform="rotate(0,320,96)"/>
                <polygon class="arrowhead" points="264,496 252,490.4 252,501.6" fill="black" transform="rotate(180,256,496)"/>
                <polygon class="arrowhead" points="264,464 252,458.4 252,469.6" fill="black" transform="rotate(180,256,464)"/>
                <polygon class="arrowhead" points="264,400 252,394.4 252,405.6" fill="black" transform="rotate(180,256,400)"/>
                <polygon class="arrowhead" points="264,320 252,314.4 252,325.6" fill="black" transform="rotate(180,256,320)"/>
                <polygon class="arrowhead" points="264,288 252,282.4 252,293.6" fill="black" transform="rotate(180,256,288)"/>
                <polygon class="arrowhead" points="264,224 252,218.4 252,229.6" fill="black" transform="rotate(180,256,224)"/>
                <polygon class="arrowhead" points="56,272 44,266.4 44,277.6" fill="black" transform="rotate(90,48,272)"/>
                <polygon class="arrowhead" points="56,240 44,234.4 44,245.6" fill="black" transform="rotate(270,48,240)"/>
                <polygon class="arrowhead" points="56,112 44,106.4 44,117.6" fill="black" transform="rotate(90,48,112)"/>
                <polygon class="arrowhead" points="56,64 44,58.4 44,69.6" fill="black" transform="rotate(270,48,64)"/>
                <g class="text">
                  <text x="84" y="36">Client</text>
                  <text x="476" y="36">Server</text>
                  <text x="16" y="68">Key</text>
                  <text x="104" y="68">ClientHello</text>
                  <text x="20" y="84">Exch</text>
                  <text x="64" y="84">+</text>
                  <text x="180" y="84">certificate_update_request</text>
                  <text x="448" y="116">ServerHello</text>
                  <text x="340" y="132">{EncryptedExtensions</text>
                  <text x="548" y="132">Server</text>
                  <text x="264" y="148">+</text>
                  <text x="384" y="148">certificate_update_request}</text>
                  <text x="548" y="148">Params</text>
                  <text x="408" y="164">{CertificateRequest*}</text>
                  <text x="440" y="180">{Certificate}</text>
                  <text x="416" y="196">{CertificateVerify}</text>
                  <text x="540" y="196">Auth</text>
                  <text x="452" y="212">{Finished}</text>
                  <text x="116" y="244">{Certificate*}</text>
                  <text x="20" y="260">Auth</text>
                  <text x="140" y="260">{CertificateVerify*}</text>
                  <text x="100" y="276">{Finished}</text>
                  <text x="108" y="292">[Application</text>
                  <text x="184" y="292">Data]</text>
                  <text x="388" y="292">[Application</text>
                  <text x="464" y="292">Data]</text>
                  <text x="288" y="308">...</text>
                  <text x="416" y="324">[CertificateUpdate]</text>
                  <text x="540" y="324">Server</text>
                  <text x="588" y="324">Cert</text>
                  <text x="108" y="356">[CertificateUpdateRequest]</text>
                  <text x="540" y="356">Update</text>
                  <text x="288" y="388">...</text>
                  <text x="116" y="404">[Application</text>
                  <text x="192" y="404">Data]</text>
                  <text x="388" y="404">[Application</text>
                  <text x="464" y="404">Data]</text>
                  <text x="288" y="420">...</text>
                  <text x="132" y="436">[CertificateUpdate*]</text>
                  <text x="540" y="436">Client</text>
                  <text x="588" y="436">Cert</text>
                  <text x="384" y="452">[CertificateUpdateRequest*]</text>
                  <text x="540" y="468">Update</text>
                  <text x="288" y="484">...</text>
                  <text x="108" y="500">[Application</text>
                  <text x="184" y="500">Data]</text>
                  <text x="388" y="500">[Application</text>
                  <text x="464" y="500">Data]</text>
                  <text x="164" y="532">*Indicates</text>
                  <text x="288" y="532">messages/extensions</text>
                  <text x="388" y="532">that</text>
                  <text x="424" y="532">are</text>
                  <text x="460" y="532">only</text>
                  <text x="500" y="532">used</text>
                  <text x="536" y="532">for</text>
                  <text x="156" y="548">client</text>
                  <text x="248" y="548">authentication.</text>
                </g>
              </svg>
            </artwork>
            <artwork type="ascii-art"><![CDATA[
        Client                                           Server

 Key  ^ ClientHello
 Exch | + certificate_update_request
      |                         -------->
      v                                            ServerHello
                                 {EncryptedExtensions           ^ Server
                                 + certificate_update_request}  | Params
                                         {CertificateRequest*}  v
                                                 {Certificate}  ^
                                           {CertificateVerify}  | Auth
                                                    {Finished}  v
                                <--------
      ^ {Certificate*}
 Auth | {CertificateVerify*}
      v {Finished}              -------->
        [Application Data]      <------->  [Application Data]
                                   ...
                                <--------  [CertificateUpdate] ^ Server Cert
                                                               |
 [CertificateUpdateRequest]     -------->                      v Update

                                   ...
         [Application Data]     <------->  [Application Data]
                                   ...
       [CertificateUpdate*]     -------->                      ^ Client Cert
                                   [CertificateUpdateRequest*] |
                                <--------                      v Update
                                   ...
        [Application Data]      <------->  [Application Data]

                *Indicates messages/extensions that are only used for
                 client authentication.
]]></artwork>
          </artset>
        </figure>
        <t>TLS peers negotiate support of the Certificate Update mechanism by including <tt>certificate_update_request</tt> extension in the <tt>ClientHello</tt> and <tt>EncryptedExtensions</tt> messages. As explained in <xref target="initial-authenticator-request"/>, the extention <bcp14>MAY</bcp14> contain an Authenticator Request can later be used by the peer to provide an updated certificate.</t>
        <t>During the lifetime of the TLS session, either peer <bcp14>MAY</bcp14> provide updated certificate by sending a <tt>CertificateUpdate</tt> message containing an Authenticator, as defined in <xref target="cert-update-message"/>. After successfully validating the updated certificate, the receiving peer <bcp14>MAY</bcp14> provide a new Authenticator Request using the <tt>CertificateUpdateRequest</tt> message defined in <xref target="additional-authenticator-requests"/>.</t>
      </section>
    </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="initial-authenticator-request">
      <name>Negotiating Support and Providing Initial Authenticator Request</name>
      <t>To enable certificate updates, endpoints must explicitly indicate support during the TLS 1.3 handshake. This is done using the <tt>certificate_update_request</tt> extension, which may be included in either the ClientHello or EncryptedExtensions message.</t>
      <t>The presence of this extension indicates that the sender supports the certificate update mechanism defined in this document. Optionally, the extension <bcp14>MAY</bcp14> carry an authenticator request. If present, this request can be used by the peer to construct an exported authenticator for delivery in a <tt>CertificateUpdate</tt> handshake message.</t>
      <t>The extension <bcp14>MAY</bcp14> also be included with an empty "extension_data" field, which indicates support for the mechanism without offering an authenticator request.</t>
      <section anchor="the-certificateupdaterequest-extension">
        <name>The certificate_update_request Extension</name>
        <t>The <tt>certificate_update_request</tt> extension is used to negotiate support for post-handshake certificate updates. It <bcp14>MAY</bcp14> appear in the <tt>ClientHello</tt> and in the <tt>EncryptedExtensions</tt> message.</t>
        <t>The extension <bcp14>MUST NOT</bcp14> appear more than once from the same endpoint during a handshake. If it appears multiple times or in an unexpected message, the receiving peer <bcp14>MUST</bcp14> abort the handshake with an <tt>illegal_parameter</tt> alert.</t>
        <ul spacing="normal">
          <li>
            <t>When sent in a <tt>ClientHello</tt>, the "extension_data" field, <bcp14>MUST</bcp14> be empty or contain a <tt>CertificateRequest</tt> structure as defined in <xref section="4" sectionFormat="of" target="EXPORTED-AUTH"/>.</t>
          </li>
          <li>
            <t>When sent in <tt>EncryptedExtensions</tt>, the "extension_data" field, <bcp14>MUST</bcp14> be empty or contain a <tt>ClientCertificateRequest</tt> structure, also defined in <xref section="4" sectionFormat="of" target="EXPORTED-AUTH"/>.</t>
          </li>
        </ul>
        <t>If "extension_data" field is not empty, it is encoded as follows:</t>
        <figure>
          <name>Optional extension_data of certificate_update_request extension</name>
          <artwork type="ascii-art"><![CDATA[
struct {
    select (Handshake.msg_type) {
        case client_hello:         CertificateRequest;
        case encrypted_extensions: ClientCertificateRequest;
    }
} CertificateUpdateRequestExtension;
]]></artwork>
        </figure>
        <t>The semantics of the extension are as follows:</t>
        <ul spacing="normal">
          <li>
            <t>If the extension is omitted, the sender indicates that it does not support receiving or sending certificate updates.</t>
          </li>
          <li>
            <t>If the extension is present with a zero-length extension_data, the sender indicates that it does not wish to receive certificate updates, but may provide a <tt>CertificateUpdate</tt> message later in the session if the peer supplied an authenticator request.</t>
          </li>
          <li>
            <t>If the extension is present with a non-empty "extension_data" field, the sender indicates support for certificate updates and provides an authenticator request that the peer may use to generate an exported authenticator in <tt>CertificateUpdate</tt> message. The <tt>extensions</tt> list inside the authenticator request <bcp14>MUST</bcp14> be empty.</t>
          </li>
        </ul>
      </section>
      <section anchor="handling-malformed-extension-data">
        <name>Handling Malformed Extension Data</name>
        <t>If an endpoint receives a <tt>certificate_update_request</tt> extension with a non-empty "extension_data" field that cannot be parsed as a valid <tt>CertificateRequest</tt> (when received in <tt>ClientHello</tt>) or <tt>ClientCertificateRequest</tt> (when received in <tt>EncryptedExtensions</tt>) with empty authenticator request <tt>extensions</tt>, it <bcp14>MUST</bcp14> abort the handshake with an <tt>illegal_parameter</tt> alert.</t>
        <t>Endpoints <bcp14>MUST NOT</bcp14> attempt to interpret or store a malformed authenticator request. The extension is either valid and usable or invalid and fatal to the handshake.</t>
      </section>
    </section>
    <section anchor="cert-update-message">
      <name>Certificate Update</name>
      <t>Once the the handshake has completed and a peer has provided an authenticator request the other endpoint may send a certificate update using the <tt>CertificateUpdate</tt> handshake message.</t>
      <t>The <tt>CertificateUpdate</tt> message carries a single Exported Authenticator, constructed using the previously received authenticator request. Authenticator requests are single-use and <bcp14>MUST NOT</bcp14> be reused for multiple updates.</t>
      <t>The message is structured as follows:</t>
      <figure>
        <name>CertificateUpdate message</name>
        <artwork type="ascii-art"><![CDATA[
struct {
    opaque authenticator<1..2^24-1>;
} CertificateUpdate;
]]></artwork>
      </figure>
      <t>Embedded authenticator is defined in <xref section="5.2.4" sectionFormat="of" target="EXPORTED-AUTH"/> as a concantenation of serialized Certificate, CertificateVerify and Finished messages.</t>
      <section anchor="authenticators-requirements">
        <name>Requirements for Authenticators</name>
        <t>The Exported Authenticator carried in a <tt>CertificateUpdate</tt> message <bcp14>MUST</bcp14> meet the following requirements:</t>
        <ul spacing="normal">
          <li>
            <t>The subject field of the certificate <bcp14>MUST</bcp14> match exactly with the certificate originally presented by the sender during the handshake.</t>
          </li>
          <li>
            <t>All extensions present in the original certificate <bcp14>MUST</bcp14> also be present in the updated certificate with identical values.</t>
          </li>
          <li>
            <t>Updated certificate <bcp14>MUST NOT</bcp14> contain any extensions that are not present in the original certificate.</t>
          </li>
          <li>
            <t>The public key <bcp14>MAY</bcp14> differ from the original, but the public key algorithm and key length <bcp14>MUST</bcp14> match those of the original certificate.</t>
          </li>
          <li>
            <t>The issuer of the updated certificate <bcp14>MUST</bcp14> be the same as the issuer of the original certificate.</t>
          </li>
          <li>
            <t>The <tt>SignatureScheme</tt> used in the <tt>CertificateVerify</tt> message of the Exported Authenticator <bcp14>MUST</bcp14> be the same as the one used in the sender’s original handshake authentication.</t>
          </li>
          <li>
            <t>The certificate provided in the <tt>CertificateUpdate</tt> message <bcp14>MUST NOT</bcp14> have been used previously by the sender during the current TLS session.</t>
          </li>
        </ul>
        <t>These constraints ensure that the authenticator represents the same logical identity and cryptographic profile as the original authentication, while ensuring freshness and preventing redundant certificate reuse. A peer that receives a <tt>CertificateUpdate</tt> containing a certificate or signature that does not meet these requirements <bcp14>MUST</bcp14> terminate the connection with an <tt>illegal_parameter</tt> alert.</t>
      </section>
      <section anchor="sending-and-receiving-certificate-updates">
        <name>Sending and Receiving Certificate Updates</name>
        <t>A <tt>CertificateUpdate</tt> message <bcp14>MAY</bcp14> be sent by either endpoint only after the handshake has completed, specifically after the sender has sent and received the <tt>Finished</tt> message. The message <bcp14>MUST NOT</bcp14> be sent during the handshake or before the authentication block is complete.</t>
        <t>A <tt>CertificateUpdate</tt> message <bcp14>MUST NOT</bcp14> be sent unless a valid authenticator request has been received from the peer and has not yet been used. Each authenticator request is single-use and <bcp14>MUST NOT</bcp14> be reused across multiple updates.</t>
        <t>In addition, a client <bcp14>MUST NOT</bcp14> send a <tt>CertificateUpdate</tt> unless it previously authenticated with a certificate during the handshake or via TLS 1.3 post-handshake authentication <xref section="4.6.2" sectionFormat="of" target="TLS"/>.</t>
        <t>If any of the above conditions are violated, the recipient <bcp14>MUST</bcp14> terminate the connection with an <tt>unexpected_message</tt> alert.</t>
        <t>The message carries a single Exported Authenticator, as defined in <xref section="5.2.4" sectionFormat="of" target="EXPORTED-AUTH"/>, in the authenticator field. If the authenticator is empty (i.e., it does not contain a <tt>Certificate</tt>), the peer <bcp14>MUST</bcp14> terminate the connection with an <tt>illegal_parameter</tt> alert.</t>
        <t>Upon receiving a valid <tt>CertificateUpdate</tt>, the peer <bcp14>MUST</bcp14> validate the Exported Authenticator according to <xref target="EXPORTED-AUTH"/> and <xref target="authenticators-requirements"/> of this document. If validation fails, the connection <bcp14>MUST</bcp14> be aborted with an <tt>illegal_parameter</tt> alert.</t>
        <t>Only one certificate update is permitted per authenticator request. Additional update <bcp14>MUST</bcp14> be provided only in response to a <tt>CertificateUpdateRequest</tt> message as described in <xref target="additional-authenticator-requests"/>.</t>
      </section>
    </section>
    <section anchor="additional-authenticator-requests">
      <name>Additional Authenticator Requests</name>
      <t>Each authenticator request is intended for one-time use, meaning that after an endpoint uses it to generate a <tt>CertificateUpdate</tt>, it cannot be reused for additional updates. To allow for subsequent certificate updates over the lifetime of a TLS connection, this document defines a new handshake message: <tt>CertificateUpdateRequest</tt>.</t>
      <t>The <tt>CertificateUpdateRequest</tt> message allows an endpoint to send a fresh authenticator request to the peer after a previous <tt>CertificateUpdate</tt> has been successfully processed.</t>
      <t>The message is structured as follows:</t>
      <figure>
        <name>CertificateUpdateRequest message</name>
        <artwork type="ascii-art"><![CDATA[
struct {
    opaque authenticator_request<1..2^16-1>;
} CertificateUpdateRequest;
]]></artwork>
      </figure>
      <t>The authenticator_request field <bcp14>MUST</bcp14> contain either a <tt>CertificateRequest</tt> or a <tt>ClientCertificateRequest</tt>, depending on the role of the sender and the direction of certificate update expected:</t>
      <ul spacing="normal">
        <li>
          <t>A client sends a <tt>CertificateRequest</tt> structure (to refresh the server’s certificate).</t>
        </li>
        <li>
          <t>A server sends a <tt>ClientCertificateRequest</tt> structure (to refresh the client’s certificate).</t>
        </li>
      </ul>
      <t>The structure and encoding of these fields are identical to the formats defined in <xref section="4" sectionFormat="of" target="EXPORTED-AUTH"/>. The <tt>extensions</tt> of the authenticator request <bcp14>MUST</bcp14> be empty.</t>
      <section anchor="sending-and-receiving-certificateupdaterequest">
        <name>Sending and Receiving CertificateUpdateRequest</name>
        <t>A <tt>CertificateUpdateRequest</tt> message <bcp14>MAY</bcp14> be sent at any time after processing a valid <tt>CertificateUpdate</tt> from the peer. An endpoint <bcp14>MUST NOT</bcp14> send a <tt>CertificateUpdateRequest</tt> unless it has received and verified a <tt>CertificateUpdate</tt> using the previous authenticator request. The endpoint <bcp14>MUST</bcp14> wait for the peer to complete a <tt>CertificateUpdate</tt> using the outstanding request before sending a new one.</t>
        <t>Upon receiving a <tt>CertificateUpdateRequest</tt>, the peer <bcp14>MUST</bcp14> validate that the message contains a well-formed <tt>CertificateRequest</tt> or <tt>ClientCertificateRequest</tt>, depending on the sender’s role. If the message is malformed, the authenticator request cannot be parsed or the authenticator request contains extensions, the connection <bcp14>MUST</bcp14> be terminated with an <tt>illegal_parameter</tt> alert.</t>
      </section>
    </section>
    <section anchor="applicability-to-quic">
      <name>Applicability to QUIC</name>
      <t>This specification is applicable to the <xref target="QUIC"/> protocol, which uses TLS 1.3 for connection security as described in <xref target="QUIC-TLS"/>.</t>
      <t>Endpoints implementing this specification over QUIC <bcp14>MUST</bcp14> encapsulate <tt>CertificateUpdate</tt> and <tt>CertificateUpdateRequest</tt> handshake messages within CRYPTO frames, consistent with the general treatment of TLS messages in QUIC.</t>
      <t>All other requirements defined in this document, including handshake process, message sequences, validation procedures, and error handling, apply equally to QUIC deployments. A QUIC connection <bcp14>MUST</bcp14> treat protocol violations (such as sending a <tt>CertificateUpdate</tt> before the handshake completes) as connection errors of type <tt>CRYPTO_ERROR</tt>, using an appropriate alert code such as <tt>illegal_parameter</tt> or <tt>unexpected_message</tt> mapped as defined in <xref section="20.1" sectionFormat="of" target="QUIC"/>.</t>
      <t>The certificate update mechanism defined in this document is compatible with QUIC as it does not introduce changes to the peer's identity.</t>
    </section>
    <section anchor="applicability-to-dtls">
      <name>Applicability to DTLS</name>
      <t>This specification is also applicable to DTLS 1.3 <xref target="DTLS"/>. The <tt>CertificateUpdate</tt> and <tt>CertificateUpdateRequest</tt> messages are handshake messages and are subject to DTLS built-in support for sequencing, fragmentation, retransmission, and replay detection, as specified in <xref target="DTLS"/>. No additional protection mechanisms are required beyond the normal DTLS handshake processing.</t>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>This mechanism relies on the security properties of <xref target="TLS"/> and Exported Authenticators <xref target="EXPORTED-AUTH"/>. It introduces additional opportunities for certificate-based authentication after the initial handshake and requires careful handling to avoid introducing vulnerabilities.</t>
      <section anchor="identity-continuity">
        <name>Identity Continuity</name>
        <t>The requirements on updated certificates and signature algorithms ensure that the logical identity authenticated during the handshake remains consistent after a certificate refresh. Endpoints <bcp14>MUST</bcp14> enforce the constraints described in <xref target="authenticators-requirements"/> to prevent identity swapping or privilege escalation.</t>
        <t>Updated certificates <bcp14>MUST NOT</bcp14> introduce new names, extensions, or capabilities beyond those present in the original certificate. Failure to enforce these constraints could allow an attacker to impersonate a different entity within the same connection.</t>
      </section>
      <section anchor="replay-prevention">
        <name>Replay Prevention</name>
        <t>Each authenticator request <bcp14>MUST</bcp14> be used exactly once to prevent replay attacks. Exported Authenticators inherently bind to the session and context, but replaying an old <tt>CertificateUpdate</tt> against a reused authenticator request could allow undetected identity reuse.</t>
        <t>Endpoints <bcp14>MUST</bcp14> discard authenticator requests after a successful <tt>CertificateUpdate</tt> and <bcp14>MUST</bcp14> validate that each certificate update corresponds uniquely to the most recent authenticator request received.</t>
      </section>
      <section anchor="application-layer-implications">
        <name>Application-Layer Implications</name>
        <t>Applications that rely on peer certificate properties for access control decisions <bcp14>MAY</bcp14> reevaluate those decisions after a certificate update if needed. However, because the updated certificate is required to maintain the same identity, such re-validation is typically unnecessary for applications that rely only on the peer's authenticated identity. If the updated certificate does not match the identity validated during the TLS handshake, the TLS stack <bcp14>MUST</bcp14> terminate the connection.</t>
      </section>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>This document registers a new TLS extension and two new TLS handshake message types, as described below.</t>
      <section anchor="tls-extension">
        <name>TLS Extension</name>
        <t>IANA is requested to add the following entry to the "TLS ExtensionType Values" registry:</t>
        <ul spacing="normal">
          <li>
            <t>The value is TBD</t>
          </li>
          <li>
            <t>The Extension Name is certificate_update_request</t>
          </li>
          <li>
            <t>The TLS 1.3 value is CH, EE</t>
          </li>
          <li>
            <t>The DTLS-Only value is N</t>
          </li>
          <li>
            <t>The Recommended value is Y</t>
          </li>
          <li>
            <t>The Reference is this document</t>
          </li>
        </ul>
      </section>
      <section anchor="tls-handshake-message-types">
        <name>TLS Handshake Message Types</name>
        <t>IANA is requested to add the following entries to the "TLS HandshakeType" registry.</t>
        <t><tt>CertificateUpdate</tt> message:</t>
        <ul spacing="normal">
          <li>
            <t>The value is TBD1</t>
          </li>
          <li>
            <t>The description is certificate_update</t>
          </li>
          <li>
            <t>The DTLS-OK is Y</t>
          </li>
          <li>
            <t>The Reference is this document</t>
          </li>
          <li>
            <t>The Comment section is empty</t>
          </li>
        </ul>
        <t><tt>CertificateUpdateRequest</tt> message:</t>
        <ul spacing="normal">
          <li>
            <t>The value is TBD2</t>
          </li>
          <li>
            <t>The description is certificate_update_request</t>
          </li>
          <li>
            <t>The DTLS-OK is Y</t>
          </li>
          <li>
            <t>The Reference is this document</t>
          </li>
          <li>
            <t>The Comment section is empty</t>
          </li>
        </ul>
      </section>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="TLS">
          <front>
            <title>The Transport Layer Security (TLS) Protocol Version 1.3</title>
            <author fullname="E. Rescorla" initials="E." surname="Rescorla"/>
            <date month="August" year="2018"/>
            <abstract>
              <t>This document specifies version 1.3 of the Transport Layer Security (TLS) protocol. TLS allows client/server applications to communicate over the Internet in a way that is designed to prevent eavesdropping, tampering, and message forgery.</t>
              <t>This document updates RFCs 5705 and 6066, and obsoletes RFCs 5077, 5246, and 6961. This document also specifies new requirements for TLS 1.2 implementations.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8446"/>
          <seriesInfo name="DOI" value="10.17487/RFC8446"/>
        </reference>
        <reference anchor="EXPORTED-AUTH">
          <front>
            <title>Exported Authenticators in TLS</title>
            <author fullname="N. Sullivan" initials="N." surname="Sullivan"/>
            <date month="July" year="2022"/>
            <abstract>
              <t>This document describes a mechanism that builds on Transport Layer Security (TLS) or Datagram Transport Layer Security (DTLS) and enables peers to provide proof of ownership of an identity, such as an X.509 certificate. This proof can be exported by one peer, transmitted out of band to the other peer, and verified by the receiving peer.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9261"/>
          <seriesInfo name="DOI" value="10.17487/RFC9261"/>
        </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="DTLS">
          <front>
            <title>The Datagram Transport Layer Security (DTLS) Protocol Version 1.3</title>
            <author fullname="E. Rescorla" initials="E." surname="Rescorla"/>
            <author fullname="H. Tschofenig" initials="H." surname="Tschofenig"/>
            <author fullname="N. Modadugu" initials="N." surname="Modadugu"/>
            <date month="April" year="2022"/>
            <abstract>
              <t>This document specifies version 1.3 of the Datagram Transport Layer Security (DTLS) protocol. DTLS 1.3 allows client/server applications to communicate over the Internet in a way that is designed to prevent eavesdropping, tampering, and message forgery.</t>
              <t>The DTLS 1.3 protocol is based on the Transport Layer Security (TLS) 1.3 protocol and provides equivalent security guarantees with the exception of order protection / non-replayability. Datagram semantics of the underlying transport are preserved by the DTLS protocol.</t>
              <t>This document obsoletes RFC 6347.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9147"/>
          <seriesInfo name="DOI" value="10.17487/RFC9147"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="QUIC-TLS">
          <front>
            <title>Using TLS to Secure QUIC</title>
            <author fullname="M. Thomson" initials="M." role="editor" surname="Thomson"/>
            <author fullname="S. Turner" initials="S." role="editor" surname="Turner"/>
            <date month="May" year="2021"/>
            <abstract>
              <t>This document describes how Transport Layer Security (TLS) is used to secure QUIC.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9001"/>
          <seriesInfo name="DOI" value="10.17487/RFC9001"/>
        </reference>
        <reference anchor="HTTP2-TLS13">
          <front>
            <title>Using TLS 1.3 with HTTP/2</title>
            <author fullname="D. Benjamin" initials="D." surname="Benjamin"/>
            <date month="February" year="2020"/>
            <abstract>
              <t>This document updates RFC 7540 by forbidding TLS 1.3 post-handshake authentication, as an analog to the existing TLS 1.2 renegotiation restriction.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8740"/>
          <seriesInfo name="DOI" value="10.17487/RFC8740"/>
        </reference>
        <reference anchor="QUIC">
          <front>
            <title>QUIC: A UDP-Based Multiplexed and Secure Transport</title>
            <author fullname="J. Iyengar" initials="J." role="editor" surname="Iyengar"/>
            <author fullname="M. Thomson" initials="M." role="editor" surname="Thomson"/>
            <date month="May" year="2021"/>
            <abstract>
              <t>This document defines the core of the QUIC transport protocol. QUIC provides applications with flow-controlled streams for structured communication, low-latency connection establishment, and network path migration. QUIC includes security measures that ensure confidentiality, integrity, and availability in a range of deployment circumstances. Accompanying documents describe the integration of TLS for key negotiation, loss detection, and an exemplary congestion control algorithm.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9000"/>
          <seriesInfo name="DOI" value="10.17487/RFC9000"/>
        </reference>
      </references>
    </references>
    <?line 316?>

<section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>TODO acknowledge.</t>
    </section>
  </back>
  <!-- ##markdown-source:
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
+aDiEjZfXKbFXKxag1hGhcG2AQI8ZN5/h4mAqqapNfipyjDatDFtz4w6EJoN
Ch8uAV8WQKFizNSgRyUKHPmbCECu0UQqdO5myoVOxBO4DIzTlVMhmD4AHLBC
9oqQ3WwYy/xkRFuyH5QTmKy9AxEnZHd6yMrBCBriy5lENqjKDvSdMyJidcmu
y7Iq8kgJ2ZBcPNmwG+WOYzJwwbzvoQxTHk4EDjCb4cAUIa7AXAZrFaPkiniy
E9+wQ+XFQxaN8rGnsYmQhPeHEmEFCJj03j2RSCbNQWZHo1MtF7VcAV3gq9BF
0SI7NopJm2Btqxwg5v7999+lNFcLCtvxc0JOrNj/85pigtFI/AA+oPjZLvBU
gToZgcUAzfKb+EcxbLjtzr8NbjCxn2/syKsPAM5CZ6G563NzVmb1Zg3cfuZ8
DhP9/LM7650L7TrvLZ71FcSgK3P3Qh6yiPbWfnwCC13tv0JqJVjh5w9ZIZ77
V+Dh+YYOg97AhwOC630PHg/6gnsd5SvHCHbkzx14PrkdESAAzzaY+CN9rjp7
xp8+lwnxt+PIopzKRv7UheOb1JB98DCdTvc/LGyyZbx/8qxIOuEP4T76/DZK
7GG5jM88CUdOfa6sOhp98OkHcPz3RPH20T7Z61BOk+2N4kEcwn6/fQjBUx+P
4j0AiTH8x5h4a5dPMLdr0wXsr5oHKuhItt219RnIQQOndBtWzpD0fKIpGqHR
zZG4N9eLCaeY4sy5oKLL16layiu2Ywe34MSBtUQ3wySyrtagJhYI5nzm4kK0
zLvizDjhy97Hu8jkvSM/4F3CkLzzmJuKY05nyZCVszHmpOPhT5zJuGXng3Ym
Mr04/tGFjBgxdOOxi33jUh9cJJPC4HScppPkPe/E56ZpXQTNLZxyXgEGiBLz
wcAkBKCdkLhzxPFWVjOujtkFbm8B0eTymTZDNsFayIZdVuldvmQYjT/UKlOa
sz39Y3EwlkY6Z3qYLYYiP3/EzhGkz4umucDAgTDffVKVV8wGnEw8xUVopuFY
BpNx11WdG3Hw4s3rSyz54f/i5Tn9fXEGwdXF2Sn+/frp8fPn/o+RHfH66fmb
56fhrzDz5PzFi7OXpzwZnorOo9EBYOmAo46D81eXz85fHj8/8E60j59QU3Cy
EbPtNcRLSAFpRuBOZxC7MEaenLz6n/8+fIxZOwgEHx0e/uX21n754vDzx/Dl
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
cp6p3XSXE3vryzih0AKIdGVkvH4hNdYWe0d3hp0C56hSsQsV56gu0fIn4j1M
C/lmzLXtjEzFVr6M7GY6SLwLQFpZI9LNGm97ImpSUrxVryZ2jEq0+xetI6iS
JUUKJe5cC4KmnaoO0wllbmNEwOOEOhZAx43hCLJk1SJdO3qcDYIxpKw6ea2B
jvk4uRPFpLKPeAO2qOK+ar49FdrLU+m4ynX2d+8jdhuyx71SeriGkbyxt7P/
fCgjsE32ZGu6Vf7c3DqQ1Kgi+8U49+ZgIG1hjWCnZcO2q4Kp+38O813Wj8P9
w8+Gwn2f5t8v6ndl8yj4v+zrYZ/D58iVZNapX+tVDVSTqnpn9Qbvdq6tu2fb
peuq8GGJdbG4AxvvVdVWf3UrDU6XOPtGAfexcwhwkb7vm6h2fUz5d2YY3ht7
vSimiba6TzG0/TFa+u7y1NYGDF5iAy6OhDIcnJ5KT4SkuXW7iRLsF4RQ27I0
31v+kOrddrK7SpnjHTnuO532DrelvdQt2Y4deNSM4CCR7kncIhm0y11PFUxQ
pCju9hU9SMFlRDUQcogwDy+pzamSknY2t5KQO1PHHdiupQ6NAKGvwV55umu/
qm3opqxLSCHpbCwRutxQNYM1Svk6w+jY4ezYkLnXKIdScq2KYmKT50PK4oNU
RZR2QK3hfchIBft0/XgHO2+VQyzCB0a7EwVxGfSvvO+5n4sFrgi3u840XvhG
YuNdI3sbqnvLkq9H0eBCOcm/ucHxfLGcLhm59hJyIVyQMufaugPWX/PY9qAS
N5M7ZRONnLiyCYlmG0hyG+gGNGEkuvGUZF1qTx2WwS0Pwt/ePLn48dXlOYg6
YNRwDUCbxlcpETX28qxoaiUbck84+gprwToIKobQRWHrHZ3sxlBz0zjqzg0w
WvU09uzI/lWGAEYOOg3L8UoSdwuquq5qWgZLhmMi8kbAVEo/WI5AWSiqDYGF
yR561uc/Omm4bsbhI0WTH4MHsxScuNjR7BrlHaKGHqt9zH1BaRK/JwHOtfzN
GulLNHl7dnFxfvEuvmWMl/rWNTUOEeMLbKsQDqSUfKBiSIWvK2zOyQcD0UcP
p4cID8vEPpfphiicuhTIF/tNJyYNV+v59piJvcx/MD49mJb1U2DHQVnH/HtX
4E+dPN/cfHTqZPTw8efenn+4hHlZQL8iIW5UOaxDJcNBMWt10Uzolmoo61t+
Jy4GyVwgIv0NfXsJ3PZoc+5sXcgNkKBx0YT0eHCUPeV0iXhZxRENsrgluScl
H8GKbw6svKmsF0nveCkY7i1pBWCJNu4dQNjQjAV/frWAsdQJDFOrgm7FOYOU
vDB3c0Ng0ymHr/9v+WS9++bhvBXhuMUuV2X6HRQTvnzYv9rp05ZbF8Yt8glR
+AoD8FHbwisgCr+vKp17WPDhVVugNiXW1a4e98zlvk/4ciP8ySLXUaJVsp+f
WSukm30JZjsZv51q7yTuklk6d6szMgwu5EvchpyKXmOAwlcBZT6B5OsE/XzD
zkwNX769Im3iQDfXINK2EQlU4pUG1Qc+IL4qyb1PJlE0i9oVuu/yKNn8xY4J
FTPXnlJBELB8tU89TXwvddFyU3yEh17FJKtavMRK6QTU8U0js/fsroKPoGpT
lZy1cDd18d1IhILo4jNVUjq3n6nKS2rhlS18YLvqjjyLc7wo8eFqqPzSl4B+
q2kYSLCfQzKpyyWBiiUlXeZOl7tuKirx8AVpLiPyutbM4aXepAZeICcC//kE
94CXGRDalqwUkc/CPWWs82y1sOQaeKceWNR4pg8ZjEErkfDr6b0VCfuZVTVn
63K8N61hL/ZUyBevDFegtt5b4E7qYikmd3Tfa8KvY3u28k+w4hN+N668RSTm
aKRXVXRKeM7JVrr9XKHIFNFtbYwya6WwTs1HRdEIP6cUhUt7zunlNFjm8O9D
ca/eGar22t51skqAI9RL3bvyjsRjdolqNYm8RZgN3pWtRbUoKWiaa35HjRzC
DSMo8kO6KtN7JS6ASsEdan+2/h0g9WyS9y9ERC/UcI8MCt3uzDxZ4GfHL4/T
1tc7ZfjKN1Dmtcsw4vJRDylK7HU1/NIR8lPNuBv20DV12z8Pk6ImeQIo3Dxg
8oFV7nV+KHzfnOP+g84al+gX/5XaIQ4s8PXGd4dQnwRucPnk1D4KXYIviTM6
maL+VXWe4nxCv9rJ07E4O7O/otMzoUS+//2l/elCgYO74gy1//FH/6N7vQIy
YEwEjynf3ixeWPTicc0H4U0Hh/mgsyYuFVAG5NlR4kwi9NA+Y0KvnSxto7OD
qB/2xAEPOCH8YcIx8+8FwwRZCtq+x50E+tG+QPd44O8LPF77nYHMUsiSvS+r
60Ll5Myb0c0Rv59T5V8fzCFE4fTx+ek5aFs3EqzU/wE5VeURnlQAAA==

-->

</rfc>
