<?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.39 (Ruby 3.4.9) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-httpbis-secondary-server-certs-02" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.33.0 -->
  <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-02"/>
    <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 CDN 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 SNI extension is exchanged in the clear, clients might also
prefer to retrieve certificates inside the encrypted context. When this
information is sensitive, it might be advantageous to request a general-purpose
certificate or anonymous ciphersuite at the TLS layer, while acquiring the
"real" certificate 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 sequence of <tt>SERVER_CERTIFICATE</tt>
frames (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 a portion of 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 a portion of 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 (OCSP, SCT, 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 (0xERROR-TBD):</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-Terminated 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>
        <t>Code: : TBD</t>
        <t>Frame Type: : SERVER_CERTIFICATE</t>
        <t>Reference: : This document</t>
        <t>This specification registers the following entry in the "HTTP/3 Frame Types"
registry established by <xref target="H3"/>:</t>
        <t>Value: : TBD</t>
        <t>Frame Type: : SERVER_CERTIFICATE</t>
        <t>Status: : permanent</t>
        <t>Reference: : This document</t>
        <t>Change Controller: : IETF</t>
        <t>Contact: : ietf-http-wg@w3.org</t>
      </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>
        <t>Code: : TBD</t>
        <t>Name: : SETTINGS_HTTP_SERVER_CERT_AUTH</t>
        <t>Initial Value: : 0</t>
        <t>Reference: : This document</t>
        <t>This specification registers the following entry in the "HTTP/3 Settings"
registry defined in <xref target="H3"/>:</t>
        <t>Code: : TBD</t>
        <t>Name: : SETTINGS_HTTP_SERVER_CERT_AUTH</t>
        <t>Default: : 0</t>
        <t>Reference: : This document</t>
        <t>Change Controller: : IETF</t>
        <t>Contact: : ietf-http-wg@w3.org</t>
      </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>
        <t>Code: : TBD</t>
        <t>Name: : SERVER_CERTIFICATE_INVALID</t>
        <t>Description: : There was an issue processing the SERVER_CERTIFICATE frame.</t>
        <t>Reference: : This document</t>
        <t>This specification registers the following entry in the "HTTP/3 Error Codes"
registry established by <xref target="H3"/>:</t>
        <t>Value: : TBD</t>
        <t>Name: : SERVER_CERTIFICATE_INVALID</t>
        <t>Description: : There was an issue processing the SERVER_CERTIFICATE frame.</t>
        <t>Status: : permanent</t>
        <t>Reference: : This document</t>
        <t>Change Controller: : IETF</t>
        <t>Contact: : ietf-http-wg@w3.org</t>
      </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="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="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>
      </references>
    </references>
    <?line 573?>

<section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>Thanks to Mike Bishop, Nick Sullivan, Martin Thomson and other
contributors for their work on the document that this is based on.</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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

-->

</rfc>
