<?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.30 (Ruby 3.4.7) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-rosomakho-tls-cert-update-01" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.31.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-01"/>
    <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="December" day="22"/>
    <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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

-->

</rfc>
