<?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.43 (Ruby 3.4.9) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-httpbis-secondary-server-certs-03" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.34.1 -->
  <front>
    <title abbrev="HTTP Server Secondary Cert Auth">Secondary Certificate Authentication of HTTP Servers</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-httpbis-secondary-server-certs-03"/>
    <author initials="E." surname="Gorbaty" fullname="Eric Gorbaty" role="editor">
      <organization>Apple</organization>
      <address>
        <email>e_gorbaty@apple.com</email>
      </address>
    </author>
    <author initials="M." surname="Bishop" fullname="Mike Bishop" role="editor">
      <organization>Akamai</organization>
      <address>
        <email>mbishop@evequefou.be</email>
      </address>
    </author>
    <date/>
    <area>Web and Internet Transport</area>
    <workgroup>HTTP</workgroup>
    <keyword>exported authenticators</keyword>
    <keyword>masque</keyword>
    <abstract>
      <?line 46?>

<t>This document defines a way for HTTP/2 and HTTP/3 servers to send additional
certificate-based credentials after a TLS connection is established, based
on TLS Exported Authenticators.</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        The latest revision of this draft can be found at <eref target="https://httpwg.org/http-extensions/draft-ietf-httpbis-secondary-server-certs.html"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-ietf-httpbis-secondary-server-certs/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        HTTP Working Group mailing list (<eref target="mailto:ietf-http-wg@w3.org"/>),
        which is archived at <eref target="https://lists.w3.org/Archives/Public/ietf-http-wg/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/httpwg/http-extensions/labels/secondary-server-certs"/>.</t>
    </note>
  </front>
  <middle>
    <?line 52?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>HTTP <xref target="HTTP"/> clients need to know that the content they receive on a
connection comes from the origin from which they intended to retrieve it. The
traditional form of server authentication in HTTP has been in the form of a
single X.509 certificate provided during the TLS <xref target="TLS13"/> handshake.</t>
      <t>TLS supports one server and one client certificate on a connection. These
certificates may contain multiple identities, but only one certificate may be
provided.</t>
      <t>Many HTTP servers host content from several origins. HTTP/2 <xref target="H2"/> and
HTTP/3 <xref target="H3"/> permit clients to reuse an existing HTTP connection to a
server provided that the secondary origin is also in the certificate provided
during the TLS handshake. In many cases, servers choose to maintain separate
certificates for different origins but still desire the benefits of a shared
HTTP connection. This document defines a capability for servers to use and
to authenticate with those separate certificates over a shared connection.</t>
      <t>The ability to maintain separate certificates for different origins can also
allow proxies that cache content from secondary origins to communicate to
clients that they can service some of those origins directly, allowing the
proxy to behave as a TLS-terminating reverse proxy for those origins instead of
establishing a TLS encrypted tunnel through the proxy.</t>
      <section anchor="server-certificate-authentication">
        <name>Server Certificate Authentication</name>
        <t><xref section="9.1.1" sectionFormat="of" target="H2"/> and <xref section="3.3" sectionFormat="of" target="H3"/> describe how connections may
be used to make requests from multiple origins as long as the server is
authoritative for both. A server is considered authoritative for an origin if
DNS resolves the origin to the IP address of the server and (for TLS) if the
certificate presented by the server contains the origin in the Subject
Alternative Names field.</t>
        <t><xref target="ALTSVC"/> enables a step of abstraction from the DNS resolution. If
both hosts have provided an Alternative Service at hostnames which resolve to
the IP address of the server, they are considered authoritative just as if DNS
resolved the origin itself to that address. However, the server's one TLS
certificate is still required to contain the name of each origin in question.</t>
        <t><xref target="ORIGIN"/> relaxes the requirement to perform the DNS lookup if already
connected to a server with an appropriate certificate which claims support for
a particular origin.</t>
        <t>Servers which host many origins often would prefer to have separate certificates
for some sets of origins. This may be for ease of certificate management
(the ability to separately revoke or renew them), due to different sources of
certificates (a content delivery network acting on behalf of multiple
origins), or other factors which might drive this administrative decision.
Clients connecting to such origins cannot currently reuse connections, even if
both client and server would prefer to do so.</t>
        <t>Because the TLS Server Name Indication (SNI) extension is exchanged in the
clear unless TLS Encrypted Client Hello <xref target="ECH"/> is used, a server
might prefer to present a general-purpose certificate at the TLS layer and
provide the "real" certificates in HTTP after the connection is established.</t>
      </section>
      <section anchor="tls-exported-authenticators">
        <name>TLS Exported Authenticators</name>
        <t>TLS Exported Authenticators <xref target="EXPORTED-AUTH"/> are structured messages
that can be exported by either party of a TLS connection and validated by the
other party. Given an established TLS connection, an authenticator message can
be constructed proving possession of a certificate and a corresponding private
key. The mechanisms that this document defines are primarily focused on the
server's ability to generate TLS Exported Authenticators.</t>
        <t>Each Authenticator is computed using a Handshake Context and Finished MAC Key
derived from the TLS session. The Handshake Context is identical for both
parties of the TLS connection, while the Finished MAC Key is dependent on
whether the Authenticator is created by the client or the server.</t>
        <t>Successfully verified Authenticators result in certificate chains, with verified
possession of the corresponding private key, which can be supplied into a
collection of available certificates. Likewise, descriptions of desired
certificates can also be supplied into these collections.</t>
      </section>
      <section anchor="http-layer-certificate-authentication">
        <name>HTTP-Layer Certificate Authentication</name>
        <t>This document defines HTTP/2 and HTTP/3 <tt>SERVER_CERTIFICATE</tt> frames
(<xref target="certs-http"/>) to carry the relevant certificate messages, enabling
certificate-based authentication of servers independent of TLS version. This
mechanism can be implemented at the HTTP layer without breaking the existing
interface between HTTP and applications above it.</t>
        <t>TLS Exported Authenticators <xref target="EXPORTED-AUTH"/> allow HTTP/2 and HTTP/3 servers to
send certificate frames which can be used to prove the server's authenticity for
multiple origins.</t>
        <t>This document additionally defines SETTINGS parameters for HTTP/2 and HTTP/3
(<xref target="settings"/>) that allow the client and server to indicate support for
HTTP-layer certificate authentication.</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="discovery">
      <name>Discovering Additional Certificates at the HTTP Layer</name>
      <t>A certificate chain with proof of possession of the private key corresponding to
the end-entity certificate is sent as a <tt>SERVER_CERTIFICATE</tt> frame (see
<xref target="http2-cert"/>, <xref target="http3-cert"/>) to the client. Once the holder of a certificate
has sent the chain and proof, this certificate chain is cached by the recipient
and available for future use.</t>
      <section anchor="settings-usage">
        <name>Indicating Support for HTTP-Layer Server Certificate Authentication</name>
        <t>The <tt>SETTINGS_HTTP_SERVER_CERT_AUTH</tt> parameters for HTTP/2 and HTTP/3 are
defined in <xref target="settings"/> so that clients and servers can indicate support for
secondary server certificate authentication.</t>
        <t>HTTP/2 and HTTP/3 endpoints that wish to indicate support for HTTP-layer
certificate authentication <bcp14>MUST</bcp14> send a <tt>SETTINGS_HTTP_SERVER_CERT_AUTH</tt>
parameter set to "1" in their SETTINGS frame. Endpoints <bcp14>MUST NOT</bcp14> use any of the
authentication functionality described in this document unless they have
both sent and received <tt>SETTINGS_HTTP_SERVER_CERT_AUTH</tt> with a value of 1.</t>
        <t>Endpoints <bcp14>MUST NOT</bcp14> send a <tt>SETTINGS_HTTP_SERVER_CERT_AUTH</tt> parameter with a
value of 0 after previously sending a value of 1.</t>
        <t><tt>SETTINGS_HTTP_SERVER_CERT_AUTH</tt> indicates that servers are able to offer
additional certificates to demonstrate control over other origin hostnames, and
that clients are able to make requests for hostnames received in a TLS Exported
Authenticator that the server sends.</t>
      </section>
      <section anchor="cert-available">
        <name>Making Certificates Available</name>
        <t>When both peers have advertised support for HTTP-layer server certificates as
in <xref target="settings-usage"/>, the server can supply additional certificates into the
connection at any time. That is, if both endpoints have sent
<tt>SETTINGS_HTTP_SERVER_CERT_AUTH</tt> and validated the value received from the
peer, the server may send certificates spontaneously, at any time, as described
by the <tt>Spontaneous Server Authentication</tt> message sequence in <xref section="3" sectionFormat="of" target="EXPORTED-AUTH"/>.</t>
        <t>This does mean that if a server knows it supports secondary certificate
authentication, and it receives <tt>SETTINGS_HTTP_SERVER_CERT_AUTH</tt> from the
client, that it can enqueue certificates immediately following the received
SETTINGS frame.</t>
        <t>Certificates supplied by servers can be considered by clients without further
action by the server. A server <bcp14>SHOULD NOT</bcp14> send certificates which do not cover
origins which it is prepared to service on the current connection, and <bcp14>SHOULD
NOT</bcp14> send them if the client has not indicated support with
<tt>SETTINGS_HTTP_SERVER_CERT_AUTH</tt>.</t>
        <t>A client <bcp14>MUST NOT</bcp14> send certificates to the server. The server <bcp14>MUST</bcp14> close the
connection upon receipt of a SERVER_CERTIFICATE frame from a client.</t>
        <figure anchor="ex-http-server-unprompted-basic">
          <name>Simple unprompted server authentication</name>
          <artset>
            <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="240" width="520" viewBox="0 0 520 240" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
                <path d="M 8,48 L 8,224" fill="none" stroke="black"/>
                <path d="M 512,48 L 512,224" fill="none" stroke="black"/>
                <path d="M 16,80 L 504,80" fill="none" stroke="black"/>
                <path d="M 16,160 L 504,160" fill="none" stroke="black"/>
                <path d="M 16,208 L 504,208" fill="none" stroke="black"/>
                <polygon class="arrowhead" points="512,160 500,154.4 500,165.6" fill="black" transform="rotate(0,504,160)"/>
                <polygon class="arrowhead" points="24,208 12,202.4 12,213.6" fill="black" transform="rotate(180,16,208)"/>
                <polygon class="arrowhead" points="24,80 12,74.4 12,85.6" fill="black" transform="rotate(180,16,80)"/>
                <g class="text">
                  <text x="28" y="36">Client</text>
                  <text x="492" y="36">Server</text>
                  <text x="120" y="68">(stream</text>
                  <text x="160" y="68">0</text>
                  <text x="176" y="68">/</text>
                  <text x="216" y="68">control</text>
                  <text x="280" y="68">stream)</text>
                  <text x="388" y="68">SERVER_CERTIFICATE</text>
                  <text x="40" y="116">...</text>
                  <text x="48" y="148">(stream</text>
                  <text x="92" y="148">N)</text>
                  <text x="120" y="148">GET</text>
                  <text x="204" y="148">/from-new-origin</text>
                  <text x="344" y="196">(stream</text>
                  <text x="388" y="196">N)</text>
                  <text x="416" y="196">200</text>
                  <text x="444" y="196">OK</text>
                </g>
              </svg>
            </artwork>
            <artwork type="ascii-art"><![CDATA[
Client                                                    Server
|                                                              |
|          (stream 0 / control stream) SERVER_CERTIFICATE      |
|<-------------------------------------------------------------|
|                                                              |
|  ...                                                         |
|                                                              |
| (stream N) GET /from-new-origin                              |
|------------------------------------------------------------->|
|                                                              |
|                                      (stream N) 200 OK       |
|<-------------------------------------------------------------|
|                                                              |
]]></artwork>
          </artset>
        </figure>
        <t>A server <bcp14>MAY</bcp14> send a <tt>SERVER_CERTIFICATE</tt> immediately after sending its <tt>SETTINGS</tt>.
However, it <bcp14>MAY</bcp14> also send certificates at any time later. For example, a proxy
might discover that a client is interested in an origin that it can reverse
proxy at the time that a client sends a <tt>CONNECT</tt> request. It can then send
certificates for those origins to allow for TLS-terminated reverse proxying to
those origins for the remainder of the connection lifetime.
<xref target="ex-http-server-unprompted-reverse"/> illustrates this behavior.</t>
        <figure anchor="ex-http-server-unprompted-reverse">
          <name>Reverse proxy server authentication</name>
          <artset>
            <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="336" width="520" viewBox="0 0 520 336" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
                <path d="M 8,48 L 8,320" fill="none" stroke="black"/>
                <path d="M 512,48 L 512,320" fill="none" stroke="black"/>
                <path d="M 16,80 L 504,80" fill="none" stroke="black"/>
                <path d="M 16,128 L 504,128" fill="none" stroke="black"/>
                <path d="M 16,176 L 504,176" fill="none" stroke="black"/>
                <path d="M 16,256 L 504,256" fill="none" stroke="black"/>
                <path d="M 16,304 L 504,304" fill="none" stroke="black"/>
                <polygon class="arrowhead" points="512,256 500,250.4 500,261.6" fill="black" transform="rotate(0,504,256)"/>
                <polygon class="arrowhead" points="512,80 500,74.4 500,85.6" fill="black" transform="rotate(0,504,80)"/>
                <polygon class="arrowhead" points="24,304 12,298.4 12,309.6" fill="black" transform="rotate(180,16,304)"/>
                <polygon class="arrowhead" points="24,176 12,170.4 12,181.6" fill="black" transform="rotate(180,16,176)"/>
                <polygon class="arrowhead" points="24,128 12,122.4 12,133.6" fill="black" transform="rotate(180,16,128)"/>
                <g class="text">
                  <text x="28" y="36">Client</text>
                  <text x="492" y="36">Server</text>
                  <text x="48" y="68">(stream</text>
                  <text x="92" y="68">N)</text>
                  <text x="136" y="68">CONNECT</text>
                  <text x="228" y="68">/to-new-origin</text>
                  <text x="120" y="116">(stream</text>
                  <text x="160" y="116">0</text>
                  <text x="176" y="116">/</text>
                  <text x="216" y="116">control</text>
                  <text x="280" y="116">stream)</text>
                  <text x="388" y="116">SERVER_CERTIFICATE</text>
                  <text x="344" y="164">(stream</text>
                  <text x="388" y="164">N)</text>
                  <text x="416" y="164">200</text>
                  <text x="444" y="164">OK</text>
                  <text x="40" y="212">...</text>
                  <text x="48" y="244">(stream</text>
                  <text x="92" y="244">M)</text>
                  <text x="120" y="244">GET</text>
                  <text x="196" y="244">/to-new-origin</text>
                  <text x="184" y="292">(stream</text>
                  <text x="228" y="292">M,</text>
                  <text x="268" y="292">direct</text>
                  <text x="316" y="292">from</text>
                  <text x="368" y="292">server)</text>
                  <text x="416" y="292">200</text>
                  <text x="444" y="292">OK</text>
                </g>
              </svg>
            </artwork>
            <artwork type="ascii-art"><![CDATA[
Client                                                    Server
|                                                              |
| (stream N) CONNECT /to-new-origin                            |
|------------------------------------------------------------->|
|                                                              |
|          (stream 0 / control stream) SERVER_CERTIFICATE      |
|<-------------------------------------------------------------|
|                                                              |
|                                      (stream N) 200 OK       |
|<-------------------------------------------------------------|
|                                                              |
|  ...                                                         |
|                                                              |
| (stream M) GET /to-new-origin                                |
|------------------------------------------------------------->|
|                                                              |
|                  (stream M, direct from server) 200 OK       |
|<-------------------------------------------------------------|
|                                                              |
]]></artwork>
          </artset>
        </figure>
      </section>
    </section>
    <section anchor="settings">
      <name>SETTINGS_HTTP_SERVER_CERT_AUTH</name>
      <t>SETTINGS parameters for HTTP/2 and HTTP/3 separately are defined below.</t>
      <section anchor="http2-setting">
        <name>The SETTINGS_HTTP_SERVER_CERT_AUTH HTTP/2 SETTINGS Parameter</name>
        <t>This document adds a new HTTP/2 SETTINGS(0xTBD) parameter to those defined by
<xref section="6.5.2" sectionFormat="of" target="H2"/>.</t>
        <t>The new parameter name is <tt>SETTINGS_HTTP_SERVER_CERT_AUTH</tt>. The value of the
parameter <bcp14>MUST</bcp14> be 0 or 1.</t>
        <t>The usage of this parameter is described in <xref target="settings-usage"/>.</t>
      </section>
      <section anchor="http3-setting">
        <name>The SETTINGS_HTTP_SERVER_CERT_AUTH HTTP/3 SETTINGS Parameter</name>
        <t>This document adds a new HTTP/3 SETTINGS(0xTBD) parameter to those defined by
<xref section="7.2.4.1" sectionFormat="of" target="H3"/>.</t>
        <t>The new parameter name is <tt>SETTINGS_HTTP_SERVER_CERT_AUTH</tt>. The value of the
parameter <bcp14>MUST</bcp14> be 0 or 1.</t>
        <t>The usage of this parameter is described in <xref target="settings-usage"/>.</t>
      </section>
    </section>
    <section anchor="certs-http">
      <name>SERVER_CERTIFICATE frame</name>
      <t>The SERVER_CERTIFICATE frame contains an exported authenticator message from the
TLS layer that provides a chain of certificates and associated extensions,
proving possession of the private key corresponding to the end-entity
certificate.</t>
      <t>The client is permitted to make subsequent requests for resources upon receipt
of a SERVER_CERTIFICATE frame without further action from the server.</t>
      <t>Upon receiving a SERVER_CERTIFICATE frame, the receiver may
validate the Exported Authenticator value by using the exported authenticator
API. This returns either an error indicating that the message was invalid or
the certificate chain and extensions used to create the message.</t>
      <section anchor="http2-cert">
        <name>HTTP/2 SERVER_CERTIFICATE frame</name>
        <t>A SERVER_CERTIFICATE frame in HTTP/2 (type=0xTBD) carries a TLS Exported
Authenticator that clients can use to authenticate secondary origins from a
sending server.</t>
        <t>The SERVER_CERTIFICATE frame applies to the connection, not a specific stream. It
<bcp14>MUST</bcp14> be sent on stream 0. An endpoint <bcp14>MUST</bcp14> treat a SERVER_CERTIFICATE frame with a
stream identifier other than 0x00 as a connection error.</t>
        <figure>
          <name>HTTP/2 SERVER_CERTIFICATE Frame</name>
          <artwork type="ascii-art"><![CDATA[
SERVER_CERTIFICATE Frame {
  Length (24),
  Type (8) = 0xTBD,

  Unused Flags (8),

  Reserved (1),
  Stream Identifier (31) = 0,

  Authenticator (..),
}
]]></artwork>
        </figure>
        <t>The Length, Type, Unused Flag(s), Reserved, and Stream Identifier fields are
described in <xref section="4" sectionFormat="of" target="H2"/>.</t>
        <t>The SERVER_CERTIFICATE frame does not define any flags.</t>
        <t>The Authenticator field is the opaque data returned from the TLS connection
exported authenticator authenticate API. See <xref target="exp-auth"/> for more details on
the input to this API.</t>
      </section>
      <section anchor="http3-cert">
        <name>HTTP/3 SERVER_CERTIFICATE frame</name>
        <t>A SERVER_CERTIFICATE frame in HTTP/3 (type=0xTBD) carries a TLS Exported
Authenticator that clients can use to authenticate secondary origins from a
sending server.</t>
        <t>The SERVER_CERTIFICATE frame applies to the connection, not a specific stream. It
<bcp14>MUST</bcp14> be sent on the control stream. An endpoint <bcp14>MUST</bcp14> treat a SERVER_CERTIFICATE
frame received on any stream other than the control stream as a connection error.</t>
        <figure>
          <name>HTTP/3 SERVER_CERTIFICATE Frame</name>
          <artwork type="ascii-art"><![CDATA[
SERVER_CERTIFICATE Frame {
  Type (i) = 0xTBD,
  Length (i),
  Authenticator (..),
}
]]></artwork>
        </figure>
        <t>The Type and Length fields are described in <xref section="7.1" sectionFormat="of" target="H3"/>.</t>
        <t>The Authenticator field is the opaque data returned from the TLS connection
exported authenticator authenticate API. See <xref target="exp-auth"/> for more details on
the input to this API.</t>
      </section>
      <section anchor="exp-auth">
        <name>Exported Authenticator Characteristics</name>
        <t>The Exported Authenticator API defined in <xref target="EXPORTED-AUTH"/> takes as input a
request, a set of certificates, and supporting information about the
certificate (Online Certificate Status Protocol (OCSP) responses, Signed
Certificate Timestamps (SCTs), etc.). The result is an opaque token which is
used when generating the <tt>SERVER_CERTIFICATE</tt> frame.</t>
        <t>Upon receipt of a <tt>SERVER_CERTIFICATE</tt> frame, a client which has negotiated
support for secondary certificates <bcp14>MUST</bcp14> perform the following steps to validate
the token it contains:</t>
        <ul spacing="normal">
          <li>
            <t>Using the <tt>get context</tt> API, retrieve the <tt>certificate_request_context</tt> used
to generate the authenticator, if any. Because the
<tt>certificate_request_context</tt> for spontaneous server certificates is chosen
by the server, the usage of the <tt>certificate_request_context</tt> is
implementation-dependent. For details, see <xref section="5" sectionFormat="of" target="EXPORTED-AUTH"/>.</t>
          </li>
          <li>
            <t>Use the <tt>validate</tt> API to confirm the validity of the authenticator with
regard to the generated request, if any.</t>
          </li>
        </ul>
        <t>If the authenticator cannot be validated, this <bcp14>MUST</bcp14> be treated as a connection
error of type SERVER_CERTIFICATE_INVALID (<xref target="errors"/>).</t>
        <t>Once the authenticator is accepted, the endpoint can perform any other checks
for the acceptability of the certificate itself.</t>
      </section>
    </section>
    <section anchor="errors">
      <name>Indicating Failures During HTTP-Layer Certificate Authentication</name>
      <t>Because this document permits certificates to be exchanged at the HTTP framing
layer instead of the TLS layer, several certificate-related errors which are
defined at the TLS layer might now occur at the HTTP framing layer.</t>
      <t>There are two classes of errors which might be encountered, and they are handled
differently.</t>
      <section anchor="misbehavior">
        <name>Misbehavior</name>
        <t>This category of errors could indicate a peer failing to follow requirements in
this document or might indicate that the connection is not fully secure. These
errors are fatal to stream or connection, as appropriate.</t>
        <dl>
          <dt>SERVER_CERTIFICATE_INVALID (0xTBD):</dt>
          <dd>
            <t>An exported authenticator could not be validated.</t>
          </dd>
        </dl>
      </section>
      <section anchor="invalid-certificates">
        <name>Invalid Certificates</name>
        <t>Unacceptable certificates (expired, revoked, or insufficient to satisfy the
request) are not treated as stream or connection errors. This is typically not
an indication of a protocol failure. Clients <bcp14>SHOULD</bcp14> establish a new connection
in an attempt to reach an authoritative server if they deem a certificate from
the server unacceptable.</t>
      </section>
    </section>
    <section anchor="security">
      <name>Security Considerations</name>
      <t>This mechanism defines an alternate way to obtain server certificates other than
in the initial TLS handshake. While the signature of exported authenticator
values is expected to be equally secure, it is important to recognize that a
vulnerability in this code path is at least equal to a vulnerability in the TLS
handshake.</t>
      <section anchor="impersonation">
        <name>Impersonation</name>
        <t>This mechanism could increase the impact of a key compromise. Rather than
needing to subvert DNS or IP routing in order to use a compromised certificate,
a malicious server now only needs a client to connect to <em>some</em> HTTPS site
under its control in order to present the compromised certificate. Clients
<bcp14>SHOULD</bcp14> consult DNS for hostnames presented in secondary certificates if they
would have done so for the same hostname if it were present in the primary
certificate.</t>
        <t>As recommended in <xref target="ORIGIN"/>, clients opting not to consult DNS ought to employ
some alternative means to increase confidence that the certificate is
legitimate, such as an <tt>ORIGIN</tt> frame.</t>
        <t>As noted in the Security Considerations of <xref target="EXPORTED-AUTH"/>, it is difficult to
formally prove that an endpoint is jointly authoritative over multiple
certificates, rather than individually authoritative on each certificate. As a
result, clients <bcp14>MUST NOT</bcp14> assume that because one origin was previously
colocated with another, those origins will be reachable via the same endpoints
in the future. Clients <bcp14>MUST NOT</bcp14> consider previous secondary certificates to be
validated after TLS session resumption. Servers <bcp14>MAY</bcp14> re-present certificates if
a TLS Session is resumed.</t>
      </section>
      <section anchor="fingerprinting">
        <name>Fingerprinting</name>
        <t>This document defines a mechanism which could be used to probe servers for
origins they support, but it opens no new attack that was not already possible
by making repeat TLS connections with different SNI values.</t>
      </section>
      <section anchor="persistence-of-service">
        <name>Persistence of Service</name>
        <t>CNAME records in the DNS are frequently used to delegate authority for an origin
to a third-party provider. This delegation can be changed without notice, even
to the third-party provider, simply by modifying the CNAME record in question.</t>
        <t>After the owner of the domain has redirected traffic elsewhere by changing the
CNAME, new connections will not arrive for that origin, but connections which
are properly directed to this provider for other origins would continue to
claim control of this origin (via Secondary Certificates). This is proper
behavior based on the third-party provider's configuration, but would likely
not be what is intended by the owner of the origin.</t>
        <t>This is not an issue which can be mitigated by the protocol, but something about
which third-party providers <bcp14>SHOULD</bcp14> educate their customers before using the
features described in this document.</t>
      </section>
      <section anchor="confusion-about-state">
        <name>Confusion About State</name>
        <t>Implementations need to be aware of the potential for confusion about the state
of a connection. The presence or absence of a validated certificate can change
during the processing of a request, potentially multiple times, as
<tt>SERVER_CERTIFICATE</tt> frames are received. A client that uses certificate
authentication needs to be prepared to reevaluate the authorization state of a
request as the set of certificates changes.</t>
        <t>Behavior for TLS-terminating reverse proxies is also worth considering. If a
server which situationally reverse-proxies wishes for the client to view a
request made prior to receipt of certificates as TLS-terminated, or wishes for
the client to start a new tunnel alternatively, this document does not currently
define formal mechanisms to facilitate that intention.</t>
      </section>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>This document registers the <tt>SERVER_CERTIFICATE</tt> frame type,
<tt>SETTINGS_HTTP_SERVER_CERT_AUTH</tt> setting, and <tt>SERVER_CERTIFICATE_INVALID</tt>
error code for both <xref target="H2"/> and <xref target="H3"/>.</t>
      <section anchor="frame-types">
        <name>Frame Types</name>
        <t>This specification registers the following entry in the "HTTP/2 Frame Type"
registry defined in <xref target="H2"/>:</t>
        <dl>
          <dt>Code:</dt>
          <dd>
            <t>TBD</t>
          </dd>
          <dt>Frame Type:</dt>
          <dd>
            <t>SERVER_CERTIFICATE</t>
          </dd>
          <dt>Reference:</dt>
          <dd>
            <t>This document</t>
          </dd>
        </dl>
        <t>This specification registers the following entry in the "HTTP/3 Frame Types"
registry established by <xref target="H3"/>:</t>
        <dl>
          <dt>Value:</dt>
          <dd>
            <t>TBD</t>
          </dd>
          <dt>Frame Type:</dt>
          <dd>
            <t>SERVER_CERTIFICATE</t>
          </dd>
          <dt>Status:</dt>
          <dd>
            <t>permanent</t>
          </dd>
          <dt>Reference:</dt>
          <dd>
            <t>This document</t>
          </dd>
          <dt>Change Controller:</dt>
          <dd>
            <t>IETF</t>
          </dd>
          <dt>Contact:</dt>
          <dd>
            <t>ietf-http-wg@w3.org</t>
          </dd>
        </dl>
      </section>
      <section anchor="settings-parameters">
        <name>Settings Parameters</name>
        <t>This specification registers the following entry in the "HTTP/2 Settings"
registry defined in <xref target="H2"/>:</t>
        <dl>
          <dt>Code:</dt>
          <dd>
            <t>TBD</t>
          </dd>
          <dt>Name:</dt>
          <dd>
            <t>SETTINGS_HTTP_SERVER_CERT_AUTH</t>
          </dd>
          <dt>Initial Value:</dt>
          <dd>
            <t>0</t>
          </dd>
          <dt>Reference:</dt>
          <dd>
            <t>This document</t>
          </dd>
        </dl>
        <t>This specification registers the following entry in the "HTTP/3 Settings"
registry defined in <xref target="H3"/>:</t>
        <dl>
          <dt>Value:</dt>
          <dd>
            <t>TBD</t>
          </dd>
          <dt>Setting Name:</dt>
          <dd>
            <t>SETTINGS_HTTP_SERVER_CERT_AUTH</t>
          </dd>
          <dt>Default:</dt>
          <dd>
            <t>0</t>
          </dd>
          <dt>Status:</dt>
          <dd>
            <t>permanent</t>
          </dd>
          <dt>Reference:</dt>
          <dd>
            <t>This document</t>
          </dd>
          <dt>Change Controller:</dt>
          <dd>
            <t>IETF</t>
          </dd>
          <dt>Contact:</dt>
          <dd>
            <t>ietf-http-wg@w3.org</t>
          </dd>
        </dl>
      </section>
      <section anchor="error-codes">
        <name>Error Codes</name>
        <t>This specification registers the following entry in the "HTTP/2 Error Code"
registry defined in <xref target="H2"/>:</t>
        <dl>
          <dt>Code:</dt>
          <dd>
            <t>TBD</t>
          </dd>
          <dt>Name:</dt>
          <dd>
            <t>SERVER_CERTIFICATE_INVALID</t>
          </dd>
          <dt>Description:</dt>
          <dd>
            <t>There was an issue processing the SERVER_CERTIFICATE frame.</t>
          </dd>
          <dt>Reference:</dt>
          <dd>
            <t>This document</t>
          </dd>
        </dl>
        <t>This specification registers the following entry in the "HTTP/3 Error Codes"
registry established by <xref target="H3"/>:</t>
        <dl>
          <dt>Value:</dt>
          <dd>
            <t>TBD</t>
          </dd>
          <dt>Name:</dt>
          <dd>
            <t>SERVER_CERTIFICATE_INVALID</t>
          </dd>
          <dt>Description:</dt>
          <dd>
            <t>There was an issue processing the SERVER_CERTIFICATE frame.</t>
          </dd>
          <dt>Status:</dt>
          <dd>
            <t>permanent</t>
          </dd>
          <dt>Reference:</dt>
          <dd>
            <t>This document</t>
          </dd>
          <dt>Change Controller:</dt>
          <dd>
            <t>IETF</t>
          </dd>
          <dt>Contact:</dt>
          <dd>
            <t>ietf-http-wg@w3.org</t>
          </dd>
        </dl>
      </section>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="HTTP">
          <front>
            <title>HTTP Semantics</title>
            <author fullname="R. Fielding" initials="R." role="editor" surname="Fielding"/>
            <author fullname="M. Nottingham" initials="M." role="editor" surname="Nottingham"/>
            <author fullname="J. Reschke" initials="J." role="editor" surname="Reschke"/>
            <date month="June" year="2022"/>
            <abstract>
              <t>The Hypertext Transfer Protocol (HTTP) is a stateless application-level protocol for distributed, collaborative, hypertext information systems. This document describes the overall architecture of HTTP, establishes common terminology, and defines aspects of the protocol that are shared by all versions. In this definition are core protocol elements, extensibility mechanisms, and the "http" and "https" Uniform Resource Identifier (URI) schemes.</t>
              <t>This document updates RFC 3864 and obsoletes RFCs 2818, 7231, 7232, 7233, 7235, 7538, 7615, 7694, and portions of 7230.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="97"/>
          <seriesInfo name="RFC" value="9110"/>
          <seriesInfo name="DOI" value="10.17487/RFC9110"/>
        </reference>
        <reference anchor="TLS13">
          <front>
            <title>The Transport Layer Security (TLS) Protocol Version 1.3</title>
            <author fullname="E. Rescorla" initials="E." surname="Rescorla"/>
            <date month="July" year="2026"/>
            <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 obsoletes RFC 8446, which specified TLS 1.3. This document obsoletes RFC 5246 (specifying TLS 1.2) and RFCs 5077, 6961, 7627, and 8422, all of which pertain to TLS 1.2 or earlier, and updates RFCs 5705 and 6066. This document also specifies new requirements for TLS 1.2 implementations.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9846"/>
          <seriesInfo name="DOI" value="10.17487/RFC9846"/>
        </reference>
        <reference anchor="H2">
          <front>
            <title>HTTP/2</title>
            <author fullname="M. Thomson" initials="M." role="editor" surname="Thomson"/>
            <author fullname="C. Benfield" initials="C." role="editor" surname="Benfield"/>
            <date month="June" year="2022"/>
            <abstract>
              <t>This specification describes an optimized expression of the semantics of the Hypertext Transfer Protocol (HTTP), referred to as HTTP version 2 (HTTP/2). HTTP/2 enables a more efficient use of network resources and a reduced latency by introducing field compression and allowing multiple concurrent exchanges on the same connection.</t>
              <t>This document obsoletes RFCs 7540 and 8740.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9113"/>
          <seriesInfo name="DOI" value="10.17487/RFC9113"/>
        </reference>
        <reference anchor="H3">
          <front>
            <title>HTTP/3</title>
            <author fullname="M. Bishop" initials="M." role="editor" surname="Bishop"/>
            <date month="June" year="2022"/>
            <abstract>
              <t>The QUIC transport protocol has several features that are desirable in a transport for HTTP, such as stream multiplexing, per-stream flow control, and low-latency connection establishment. This document describes a mapping of HTTP semantics over QUIC. This document also identifies HTTP/2 features that are subsumed by QUIC and describes how HTTP/2 extensions can be ported to HTTP/3.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9114"/>
          <seriesInfo name="DOI" value="10.17487/RFC9114"/>
        </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>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="ALTSVC">
          <front>
            <title>HTTP Alternative Services</title>
            <author fullname="M. Nottingham" initials="M." surname="Nottingham"/>
            <author fullname="P. McManus" initials="P." surname="McManus"/>
            <author fullname="J. Reschke" initials="J." surname="Reschke"/>
            <date month="April" year="2016"/>
            <abstract>
              <t>This document specifies "Alternative Services" for HTTP, which allow an origin's resources to be authoritatively available at a separate network location, possibly accessed with a different protocol configuration.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7838"/>
          <seriesInfo name="DOI" value="10.17487/RFC7838"/>
        </reference>
        <reference anchor="ORIGIN">
          <front>
            <title>The ORIGIN HTTP/2 Frame</title>
            <author fullname="M. Nottingham" initials="M." surname="Nottingham"/>
            <author fullname="E. Nygren" initials="E." surname="Nygren"/>
            <date month="March" year="2018"/>
            <abstract>
              <t>This document specifies the ORIGIN frame for HTTP/2, to indicate what origins are available on a given connection.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8336"/>
          <seriesInfo name="DOI" value="10.17487/RFC8336"/>
        </reference>
        <reference anchor="ECH">
          <front>
            <title>TLS Encrypted Client Hello</title>
            <author fullname="E. Rescorla" initials="E." surname="Rescorla"/>
            <author fullname="K. Oku" initials="K." surname="Oku"/>
            <author fullname="N. Sullivan" initials="N." surname="Sullivan"/>
            <author fullname="C. A. Wood" initials="C. A." surname="Wood"/>
            <date month="March" year="2026"/>
            <abstract>
              <t>This document describes a mechanism in Transport Layer Security (TLS) for encrypting a message under a server public key.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9849"/>
          <seriesInfo name="DOI" value="10.17487/RFC9849"/>
        </reference>
      </references>
    </references>
    <?line 606?>

<section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>This document is based on draft-ietf-httpbis-http2-secondary-certs. Thanks to
Nick Sullivan, Martin Thomson and other contributors for their work on it.</t>
      <t>And thanks to Eric Kinnear, Tommy Pauly, and Lucas Pardue for their guidance and
editorial contributions to this document.</t>
    </section>
  </back>
  <!-- ##markdown-source:
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
/b+VZwch+FwAAA==

-->

</rfc>
