<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.29 (Ruby 3.2.2) -->
<?rfc-ext html-pretty-print="prettyprint https://cdn.rawgit.com/google/code-prettify/master/loader/run_prettify.js"?>
<rfc xmlns:x="http://purl.org/net/xml2rfc/ext"
     category="std"
     consensus="true"
     docName="draft-ietf-httpbis-secondary-server-certs-latest"
     ipr="trust200902"
     sortRefs="true"
     submissionType="IETF"
     symRefs="true"
     tocInclude="true">
   <x:feedback template="mailto:ietf-http-wg@w3.org?subject={docname},%20%22{section}%22\&amp;amp;body=%3c{ref}%3e:"/>
   <front>
      <title abbrev="HTTP Server Secondary Cert Auth">Secondary Certificate Authentication of HTTP Servers</title>
      <author fullname="Eric Gorbaty"
              initials="E."
              role="editor"
              surname="Gorbaty">
         <organization>Apple</organization>
         <address>
            <email>e_gorbaty@apple.com</email>
         </address>
      </author>
      <author fullname="Mike Bishop"
              initials="M."
              role="editor"
              surname="Bishop">
         <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" title="About This Document">
         <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 seperate certificates over a shared connection.</t>
         <t>The ability to maintain seperate 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 <spanx style="verb">SERVER_CERTIFICATE</spanx> 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 the opportunity for an HTTP/2 and HTTP/3 servers to send certificate frames which can be used to prove the servers 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 <spanx style="verb">SERVER_CERTIFICATE</spanx> 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 Certificate Authentication</name>
            <t>The <spanx style="verb">SETTINGS_HTTP_SERVER_CERT_AUTH</spanx> parameters for HTTP/2 and HTTP/3 are defined in <xref target="settings"/> so that clients and servers can indicate support for secondary certificate authentication of servers.</t>
            <t>HTTP/2 and HTTP/3 endpoints who wish to indicate support for HTTP-Layer certificate authentication <bcp14>MUST</bcp14> send a <spanx style="verb">SETTINGS_HTTP_SERVER_CERT_AUTH</spanx> parameter set to "1" in their SETTINGS frame. Endpoints <bcp14>MUST NOT</bcp14> use any of the authentication functionality described in this document unless the parameter has been negotiated by both sides.</t>
            <t>Endpoints <bcp14>MUST NOT</bcp14> send a <spanx style="verb">SETTINGS_HTTP_SERVER_CERT_AUTH</spanx> parameter with a value of 0 after previously sending a value of 1.</t>
            <t>
               <spanx style="verb">SETTINGS_HTTP_SERVER_CERT_AUTH</spanx> 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 certificates in a given direction as in <xref target="settings-usage"/>, the indicated endpoint can supply additional certificates into the connection at any time. That is, if both endpoints have sent <spanx style="verb">SETTINGS_HTTP_SERVER_CERT_AUTH</spanx> and validated the value received from the peer, the server may send certificates spontaneously, at any time, as described by the <spanx style="verb">Spontaneous Server Authentication</spanx> 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 <spanx style="verb">SETTINGS_HTTP_SERVER_CERT_AUTH</spanx> 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 <spanx style="verb">SETTINGS_HTTP_SERVER_CERT_AUTH</spanx>.</t>
            <t>A client <bcp14>MUST NOT</bcp14> send certificates to the server. The server <bcp14>SHOULD</bcp14> close the connection upon receipt of a SERVER_CERTIFICATE frame from a client.</t>
            <figure anchor="ex-http-server-unprompted-basic"
                    title="Simple unprompted server authentication">
               <sourcecode type="drawing">
Client                                               Server
   &lt;-- (stream 0 / control stream) SERVER_CERTIFICATE --
   ...
   -- (stream N) GET /from-new-origin -----------------&gt;
   &lt;------------------------------ (stream N) 200 OK ---
</sourcecode>
            </figure>
            <t>A server <bcp14>MAY</bcp14> send a <spanx style="verb">SERVER_CERTIFICATE</spanx> immediately after sending its <spanx style="verb">SETTINGS</spanx>. 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 <spanx style="verb">CONNECT</spanx> 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"
                    title="Reverse proxy server authentication">
               <sourcecode type="drawing">
Client                                                 Server
   -- (stream N) CONNECT /to-new-origin -----------------&gt;
   &lt;---- (stream 0 / control stream) SERVER_CERTIFICATE --
   &lt;---- (stream 0 / control stream) 200 OK --------------
   ...
   -- (stream M) GET /to-new-origin ---------------------&gt;
   &lt;------------ (stream M, direct from server) 200 OK ---
</sourcecode>
            </figure>
         </section>
      </section>
      <section anchor="settings">
         <name>SETTINGS_HTTP_SERVER_CERT_AUTH</name>
         <t>SETTINGS parameters for HTTP/2 and HTTP/3 seperately 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 <spanx style="verb">SETTINGS_HTTP_SERVER_CERT_AUTH</spanx>. 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 <spanx style="verb">SETTINGS_HTTP_SERVER_CERT_AUTH</spanx>. 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>A server sends a SERVER_CERTIFICATE frame on stream 0 for HTTP/2 and on the control stream for HTTP/3. 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 complete series of SERVER_CERTIFICATE frames, 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) carrries a TLS Exported authenticator that clients can use to authenticate secondary origins from a sending server.</t>
            <t>The SERVER_CERTIFICATE frame <bcp14>MUST</bcp14> be sent on stream 0. A SERVER_CERTIFICATE frame received on any other stream <bcp14>MUST</bcp14> not be used for server authentication.</t>
            <figure title="HTTP/2 SERVER_CERTIFICATE Frame">
               <artwork type="ascii-art">
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>
            <t>The SERVER_CERTIFICATE frame applies to the connection, not a specific stream. An endpoint <bcp14>MUST</bcp14> treat a SERVER_CERTIFICATE frame with a stream identifier other than 0x00 as a connection error.</t>
         </section>
         <section anchor="http3-cert">
            <name>HTTP/3 SERVER_CERTIFICATE frame</name>
            <t>A SERVER_CERTIFICATE frame in HTTP/3 (type=0xTBD) carrries a TLS Exported authenticator that clients can use to authenticate secondary origins from a sending server.</t>
            <t>The SERVER_CERTIFICATE frame <bcp14>MUST</bcp14> be sent on the control stream. A SERVER_CERTIFICATE frame received on any other stream <bcp14>MUST</bcp14> not be used for server authentication.</t>
            <figure title="HTTP/3 SERVER_CERTIFICATE Frame">
               <artwork type="ascii-art">
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>
            <t>The SERVER_CERTIFICATE frame applies to the connection, not a specific 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>
         </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 <spanx style="verb">SERVER_CERTIFICATE</spanx> frame.</t>
            <t>Upon receipt of a <spanx style="verb">SERVER_CERTIFICATE</spanx> frame, an endpoint which has negotiated support for secondary certfiicates <bcp14>MUST</bcp14> perform the following steps to validate the token it contains:</t>
            <t>
               <list style="symbols">
                  <t>Using the <spanx style="verb">get context</spanx> API, retrieve the <spanx style="verb">certificate_request_context</spanx> used to generate the authenticator, if any. Because the <spanx style="verb">certificate_request_context</spanx> for spontaneous server certificates is chosen by the server, the usage of the <spanx style="verb">certificate_request_context</spanx> is implementation-dependent. For details, see <xref section="5" sectionFormat="of" target="EXPORTED-AUTH"/>.</t>
                  <t>Use the <spanx style="verb">validate</spanx> API to confirm the validity of the authenticator with regard to the generated request, if any.</t>
               </list>
            </t>
            <t>If the authenticator cannot be validated, this <bcp14>SHOULD</bcp14> be treated as a connection error.</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_UNREADABLE (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 and client 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 <spanx style="verb">ORIGIN</spanx> 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 <spanx style="verb">SERVER_CERTIFICATE</spanx> 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 <spanx style="verb">SERVER_CERTIFICATE</spanx> frame type and <spanx style="verb">SETTINGS_HTTP_SERVER_CERT_AUTH</spanx> setting 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>
   </middle>
   <back>
      <references anchor="sec-combined-references" title="References">
         <references anchor="sec-normative-references" title="Normative References">
            <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"/>
               </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"/>
               </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"/>
               </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"/>
               </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"/>
               </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"/>
               </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"/>
               </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" title="Informative References">
            <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"/>
               </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"/>
               </front>
               <seriesInfo name="RFC" value="8336"/>
               <seriesInfo name="DOI" value="10.17487/RFC8336"/>
            </reference>
         </references>
      </references>
      <?line 526?>
      <section anchor="acknowledgments" numbered="false">
         <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>
</rfc>
