<?xml version="1.0" encoding="UTF-8"?>
  <?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
  <!-- generated by https://github.com/cabo/kramdown-rfc2629 version 1.2.9 -->

<!DOCTYPE rfc SYSTEM "rfc2629.dtd" [
]>

<?rfc toc="yes"?>
<?rfc sortrefs="yes"?>
<?rfc symrefs="yes"?>

<rfc ipr="trust200902" docName="draft-ietf-httpbis-expect-ct-08" category="exp">

  <front>
    <title abbrev="Expect-CT">Expect-CT Extension for HTTP</title>

    <author initials="E." surname="Stark" fullname="Emily Stark">
      <organization>Google</organization>
      <address>
        <email>estark@google.com</email>
      </address>
    </author>

    <date />

    <area>Applications and Real-Time</area>
    <workgroup>HTTP</workgroup>
    

    <abstract>


<t>This document defines a new HTTP header field named Expect-CT, which allows web
host operators to instruct user agents to expect valid Signed Certificate
Timestamps (SCTs) to be served on connections to these hosts. Expect-CT allows
web host operators to discover misconfigurations in their Certificate
Transparency deployments. Further, web host operaters can use Expect-CT to
ensure that, if a UA which supports Expect-CT accepts a misissued certificate,
that certificate will be discoverable in Certificate Transparency logs.</t>



    </abstract>


    <note title="Note to Readers">


<t>Discussion of this draft takes place on the HTTP working group mailing list
(ietf-http-wg@w3.org), which is archived at <eref target="https://lists.w3.org/Archives/Public/ietf-http-wg/">https://lists.w3.org/Archives/Public/ietf-http-wg/</eref>.</t>

<t>Working Group information can be found at <eref target="http://httpwg.github.io/">http://httpwg.github.io/</eref>; source
code and issues list for this draft can be found at
<eref target="https://github.com/httpwg/http-extensions/labels/expect-ct">https://github.com/httpwg/http-extensions/labels/expect-ct</eref>.</t>


    </note>


  </front>

  <middle>


<section anchor="introduction" title="Introduction">

<t>This document defines a new HTTP header field that enables UAs to identify web hosts
that expect the presence of Signed Certificate Timestamps (SCTs)
<xref target="I-D.ietf-trans-rfc6962-bis"/> in subsequent Transport Layer Security (TLS)
<xref target="RFC8446"/> connections.</t>

<t>Web hosts that serve the Expect-CT HTTP header field are noted by the UA as Known
Expect-CT Hosts. The UA evaluates each connection to a Known Expect-CT Host for
compliance with the UA’s Certificate Transparency (CT) Policy. If the connection
violates the CT Policy, the UA sends a report to a URI configured by the
Expect-CT Host and/or fails the connection, depending on the configuration that
the Expect-CT Host has chosen.</t>

<t>If misconfigured, Expect-CT can cause unwanted connection failures (for example,
if a host deploys Expect-CT but then switches to a legitimate certificate that
is not logged in Certificate Transparency logs, or if a web host operator
believes their certificate to conform to all UAs’ CT policies but is
mistaken). Web host operators are advised to deploy Expect-CT with precautions,
by using the reporting feature and gradually increasing the time interval during
which the UA regards the host as a Known Expect-CT Host. These precautions can
help web host operators gain confidence that their Expect-CT deployment is not
causing unwanted connection failures.</t>

<t>Expect-CT is a trust-on-first-use (TOFU) mechanism. The first time a UA
connects to a host, it lacks the information necessary to require SCTs for the
connection. Thus, the UA will not be able to detect and thwart an attack on the
UA’s first connection to the host. Still, Expect-CT provides value by 1)
allowing UAs to detect the use of unlogged certificates after the initial
communication, and 2) allowing web hosts to be confident that UAs are only
trusting publicly-auditable certificates.</t>

<t>Expect-CT is similar to HSTS <xref target="RFC6797"/> and HPKP <xref target="RFC7469"/>. HSTS allows web
sites to declare themselves accessible only via secure connections, and HPKP
allows web sites to declare their cryptographic identifies. Similarly, Expect-CT
allows web sites to declare themselves accessible only via connections that are
compliant with CT policy.</t>

<t>This Expect-CT specification is compatible with <xref target="RFC6962"/> and
<xref target="I-D.ietf-trans-rfc6962-bis"/>, but not with future versions of Certificate
Transparency. Expect-CT header fields will be ignore from web hosts which use
future versions of Certificate Transparency, unless a future version of this
document specifies how they should be processed.</t>

<section anchor="requirements-language" title="Requirements Language">

<t>The key words “MUST”, “MUST NOT”, “REQUIRED”, “SHALL”, “SHALL NOT”, “SHOULD”,
“SHOULD NOT”, “RECOMMENDED”, “NOT RECOMMENDED”, “MAY”, and “OPTIONAL” 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>

</section>
<section anchor="terminology" title="Terminology">

<t>Terminology is defined in this section.</t>

<t><list style="symbols">
  <t>“Certificate Transparency Policy” is a policy defined by the UA concerning the
number, sources, and delivery mechanisms of Signed Certificate Timestamps that
are associated with TLS connections. The policy defines the properties of a
connection that must be met in order for the UA to consider it CT-qualified.</t>
  <t>“Certificate Transparency Qualified” describes a TLS connection for which the
UA has determined that a sufficient quantity and quality of Signed Certificate
Timestamps have been provided.</t>
  <t>“CT-qualified” is an abbreviation for “Certificate Transparency Qualified”.</t>
  <t>“CT Policy” is an abbreviation for “Certificate Transparency Policy”.</t>
  <t>“Effective Expect-CT Date” is the time at which a UA observed a valid
Expect-CT header field for a given host.</t>
  <t>“Expect-CT Host” is a conformant host implementing the HTTP server aspects of
Expect-CT. This means that an Expect-CT Host returns the “Expect-CT” HTTP
response header field in its HTTP response messages sent over secure
transport. The term “host” is equivalent to “server” in this specification.</t>
  <t>“Known Expect-CT Host” is an Expect-CT Host that the UA has noted as such. See
<xref target="noting-expect-ct"/> for particulars.</t>
  <t>UA is an acronym for “user agent”. For the purposes of this specification, a
UA is an HTTP client application typically actively manipulated by a user
<xref target="RFC7230"/>.</t>
  <t>“Unknown Expect-CT Host” is an Expect-CT Host that the UA has not noted.</t>
</list></t>

</section>
</section>
<section anchor="server-and-client-behavior" title="Server and Client Behavior">

<section anchor="response-header-field-syntax" title="Response Header Field Syntax">

<t>The “Expect-CT” response header field is a new field defined in this
specification. It is used by a server to indicate that UAs should evaluate
connections to the host emitting the header field for CT compliance
(<xref target="expect-ct-compliance"/>).</t>

<t><xref target="expect-ct-syntax"/> describes the syntax (Augmented Backus-Naur Form) of the
header field, using the grammar defined in <xref target="RFC5234"/> and the rules defined in
Section 3.2 of <xref target="RFC7230"/>. The “#” ABNF extension is specified in Section 7 of
<xref target="RFC7230"/>.</t>

<figure title="Syntax of the Expect-CT header field" anchor="expect-ct-syntax"><artwork type="abnf"><![CDATA[
Expect-CT           = 1#expect-ct-directive
expect-ct-directive = directive-name [ "=" directive-value ]
directive-name      = token
directive-value     = token / quoted-string
]]></artwork></figure>

<t>The directives defined in this specification are described below. The overall
requirements for directives are:</t>

<t><list style="numbers">
  <t>The order of appearance of directives is not significant.</t>
  <t>A given directive MUST NOT appear more than once in a given header
field. Directives are either optional or required, as stipulated in their
definitions.</t>
  <t>Directive names are case insensitive.</t>
  <t>UAs MUST ignore any header fields containing directives, or other header
field value data that do not conform to the syntax defined in this
specification.  In particular, UAs MUST NOT attempt to fix malformed header
fields.</t>
  <t>If a header field contains any directive(s) the UA does not recognize, the
UA MUST ignore those directives.</t>
  <t>If the Expect-CT header field otherwise satisfies the above requirements (1
through 5), and Expect-CT is not disabled for local policy reasons (as
discussed in <xref target="skipping-ct-compliance-checks"/>), the UA MUST process the
directives it recognizes.</t>
</list></t>

<section anchor="the-report-uri-directive" title="The report-uri Directive">

<t>The OPTIONAL <spanx style="verb">report-uri</spanx> directive indicates the URI to which the UA SHOULD
report Expect-CT failures (<xref target="expect-ct-compliance"/>). The UA POSTs the reports
to the given URI as described in <xref target="reporting-expect-ct-failure"/>.</t>

<t>The <spanx style="verb">report-uri</spanx> directive is REQUIRED to have a directive value, for which the
syntax is defined in <xref target="reporturi-syntax"/>.</t>

<figure title="Syntax of the report-uri directive value" anchor="reporturi-syntax"><artwork type="abnf"><![CDATA[
report-uri-value = absolute-URI
]]></artwork></figure>

<t><spanx style="verb">absolute-URI</spanx> is defined in Section 4.3 of <xref target="RFC3986"/>.</t>

<t>UAs MUST ignore <spanx style="verb">report-uri</spanx>s that do not use the HTTPS scheme. UAs MUST check
Expect-CT compliance when the host in the <spanx style="verb">report-uri</spanx> is a Known Expect-CT
Host; similarly, UAs MUST apply HSTS <xref target="RFC6797"/> if the host in the
<spanx style="verb">report-uri</spanx> is a Known HSTS Host.</t>

<t>UAs SHOULD make their best effort to report Expect-CT failures to the
<spanx style="verb">report-uri</spanx>, but they may fail to report in exceptional conditions.  For
example, if connecting to the <spanx style="verb">report-uri</spanx> itself incurs an Expect-CT failure
or other certificate validation failure, the UA MUST cancel the connection.
Similarly, if Expect-CT Host A sets a <spanx style="verb">report-uri</spanx> referring to Expect-CT Host
B, and if B sets a <spanx style="verb">report-uri</spanx> referring to A, and if both hosts fail to comply
to the UA’s CT Policy, the UA SHOULD detect and break the loop by failing to
send reports to and about those hosts.</t>

<t>Note that the report-uri need not necessarily be in the same Internet domain or
web origin as the host being reported about. Hosts are in fact encouraged to use
a separate host as the report-uri, so that CT failures on the Expect-CT host do
not prevent reports from being sent.</t>

<t>UAs SHOULD limit the rate at which they send reports. For example, it is
unnecessary to send the same report to the same <spanx style="verb">report-uri</spanx> more than once in
the same web browsing session.</t>

</section>
<section anchor="the-enforce-directive" title="The enforce Directive">

<t>The OPTIONAL <spanx style="verb">enforce</spanx> directive is a valueless directive that, if present
(i.e., it is “asserted”), signals to the UA that compliance to the CT Policy
should be enforced (rather than report-only) and that the UA should refuse
future connections that violate its CT Policy. When both the <spanx style="verb">enforce</spanx> directive
and <spanx style="verb">report-uri</spanx> directive (as defined in <xref target="reporturi-syntax"/>) are present, the
configuration is referred to as an “enforce-and-report” configuration,
signalling to the UA both that compliance to the CT Policy should be enforced
and that violations should be reported.</t>

</section>
<section anchor="the-max-age-directive" title="The max-age Directive">

<t>The <spanx style="verb">max-age</spanx> directive specifies the number of seconds after the reception of
the Expect-CT header field during which the UA SHOULD regard the host from whom
the message was received as a Known Expect-CT Host.</t>

<t>If a response contains an “Expect-CT” header field, then the response MUST
contain an “Expect-CT” header field with a <spanx style="verb">max-age</spanx> directive. (A <spanx style="verb">max-age</spanx>
directive need not appear in every “Expect-CT” header field in the response.)
The <spanx style="verb">max-age</spanx> directive is REQUIRED to have a directive value, for which the
syntax (after quoted-string unescaping, if necessary) is defined in
<xref target="maxage-syntax"/>.</t>

<figure title="Syntax of the max-age directive value" anchor="maxage-syntax"><artwork type="abnf"><![CDATA[
max-age-value = delta-seconds
delta-seconds = 1*DIGIT
]]></artwork></figure>

<t><spanx style="verb">delta-seconds</spanx> is used as defined in Section 1.2.1 of <xref target="RFC7234"/>.</t>

</section>
<section anchor="examples" title="Examples">

<t>The following three examples demonstrate valid Expect-CT response header fields
(where the second splits the directives into two field instances):</t>

<figure title="Examples of valid Expect-CT response header fields" anchor="example-header-fields"><artwork type="inline"><![CDATA[
Expect-CT: max-age=86400, enforce

Expect-CT: max-age=86400,enforce
Expect-CT: report-uri="https://foo.example/report"

Expect-CT: max-age=86400,report-uri="https://foo.example/report"
]]></artwork></figure>

</section>
</section>
<section anchor="host-processing-model" title="Host Processing Model">

<t>This section describes the processing model that Expect-CT Hosts implement.  The
model has 2 parts: (1) the processing rules for HTTP request messages received
over a secure transport (e.g., authenticated, non-anonymous TLS); and (2) the
processing rules for HTTP request messages received over non-secure transports,
such as TCP.</t>

<section anchor="http-over-secure-transport-request-type" title="HTTP-over-Secure-Transport Request Type">

<t>An Expect-CT Host includes an Expect-CT header field in its response. The header
field MUST satisfy the grammar specified in <xref target="response-header-field-syntax"/>.</t>

<t>Establishing a given host as an Expect-CT Host, in the context of a given UA,
is accomplished as follows:</t>

<t><list style="numbers">
  <t>Over the HTTP protocol running over secure transport, by correctly returning
(per this specification) a valid Expect-CT header field to the UA.</t>
  <t>Through other mechanisms, such as a client-side preloaded Expect-CT Host
list.</t>
</list></t>

</section>
<section anchor="http-request-type" title="HTTP Request Type">

<t>Expect-CT Hosts SHOULD NOT include the Expect-CT header field in HTTP responses
conveyed over non-secure transport.</t>

</section>
</section>
<section anchor="user-agent-processing-model" title="User Agent Processing Model">

<t>The UA processing model relies on parsing domain names.  Note that
internationalized domain names SHALL be canonicalized by the UA according to the
scheme in Section 10 of <xref target="RFC6797"/>.</t>

<t>The UA stores Known Expect-CT Hosts and their associated Expect-CT
directives. This data is collectively known as a host’s “Expect-CT” metadata”.</t>

<section anchor="missing-or-malformed-expect-ct-header-fields" title="Missing or Malformed Expect-CT Header Fields">

<t>If an HTTP response does not include an Expect-CT header field that conforms to
the grammar specified in <xref target="response-header-field-syntax"/>, then the UA MUST NOT
update any Expect-CT metadata.</t>

</section>
<section anchor="expect-ct-header-field-processing" title="Expect-CT Header Field Processing">

<t>If the UA receives an HTTP response over a secure transport that includes an
Expect-CT header field conforming to the grammar specified in
<xref target="response-header-field-syntax"/>, the UA MUST evaluate the connection on which
the header field was received for compliance with the UA’s CT Policy, and then
process the Expect-CT header field as follows. UAs MUST ignore any Expect-CT
header field received in an HTTP response conveyed over non-secure transport.</t>

<t>If the connection does not comply with the UA’s CT Policy (i.e., the connection
is not CT-qualified), then the UA MUST NOT update any Expect-CT metadata. If the
header field includes a <spanx style="verb">report-uri</spanx> directive, the UA SHOULD send a report to
the specified <spanx style="verb">report-uri</spanx> (<xref target="header-field-processing-reporting"/>).</t>

<t>If the connection complies with the UA’s CT Policy (i.e., the connection is
CT-qualified), then the UA MUST either:</t>

<t><list style="symbols">
  <t>Note the host as a Known Expect-CT Host if it is not already so noted (see
<xref target="noting-expect-ct"/>), or</t>
  <t>Update the UA’s cached information for the Known Expect-CT Host if the
<spanx style="verb">enforce</spanx>, <spanx style="verb">max-age</spanx>, or <spanx style="verb">report-uri</spanx> header field value directives convey
information different from that already maintained by the UA. If the <spanx style="verb">max-age</spanx>
directive has a value of 0, the UA MUST remove its cached Expect-CT
information if the host was previously noted as a Known Expect-CT Host, and
MUST NOT note this host as a Known Expect-CT Host if it is not already noted.</t>
</list></t>

<t>If a UA receives an Expect-CT header field over a CT-compliant connection which
uses a version of Certificate Transparency other than <xref target="RFC6962"/> or
<xref target="I-D.ietf-trans-rfc6962-bis"/>, the UA MUST ignore the Expect-CT header field
and clear any Expect-CT metadata associated with the host.</t>

<section anchor="noting-expect-ct" title="Noting Expect-CT">

<t>Upon receipt of the Expect-CT response header field over an error-free TLS
connection (with X.509 certificate chain validation as described in
<xref target="RFC5280"/>, as well as the validation described in <xref target="expect-ct-compliance"/>),
the UA MUST note the host as a Known Expect-CT Host, storing the host’s domain
name and its associated Expect-CT directives in non-volatile storage.</t>

<t>To note a host as a Known Expect-CT Host, the UA MUST set its Expect-CT metadata
in its Known Expect-CT Host cache (as specified in <xref target="storage-model"/>, using the
metadata given in the most recently received valid Expect-CT header field.</t>

<t>For forward compatibility, the UA MUST ignore any unrecognized Expect-CT header
field directives, while still processing those directives it does
recognize. <xref target="response-header-field-syntax"/> specifies the directives <spanx style="verb">enforce</spanx>,
<spanx style="verb">max-age</spanx>, and <spanx style="verb">report-uri</spanx>, but future specifications and implementations might
use additional directives.</t>

</section>
<section anchor="storage-model" title="Storage Model">

<t>If the substring matching the host production from the Request-URI (of the
message to which the host responded) does not exactly match an existing Known
Expect-CT Host’s domain name, per the matching procedure for a Congruent Match
specified in Section 8.2 of <xref target="RFC6797"/>, then the UA MUST add this host to the
Known Expect-CT Host cache. The UA caches:</t>

<t><list style="symbols">
  <t>the Expect-CT Host’s domain name,</t>
  <t>whether the <spanx style="verb">enforce</spanx> directive is present</t>
  <t>the Effective Expiration Date, which is the Effective Expect-CT Date plus the
value of the <spanx style="verb">max-age</spanx> directive. Alternatively, the UA MAY cache enough
information to calculate the Effective Expiration Date. The Effective
Expiration Date is calculated from when the UA observed the Expect-CT header
field and is independent of when the response was generated.</t>
  <t>the value of the <spanx style="verb">report-uri</spanx> directive, if present.</t>
</list></t>

<t>If any other metadata from optional or future Expect-CT header directives are
present in the Expect-CT header field, and the UA understands them, the UA MAY note
them as well.</t>

<t>UAs MAY set an upper limit on the value of max-age, so that UAs that have noted
erroneous Expect-CT hosts (whether by accident or due to attack) have some
chance of recovering over time.  If the server sets a max-age greater than the
UA’s upper limit, the UA may behave as if the server set the max-age to the UA’s
upper limit.  For example, if the UA caps max-age at 5,184,000 seconds (60
days), and an Expect-CT Host sets a max- age directive of 90 days in its
Expect-CT header field, the UA may behave as if the max-age were effectively 60
days. (One way to achieve this behavior is for the UA to simply store a value of
60 days instead of the 90-day value provided by the Expect-CT host.)</t>

</section>
</section>
<section anchor="header-field-processing-reporting" title="Reporting">

<t>If the UA receives, over a secure transport, an HTTP response that includes an
Expect-CT header field with a <spanx style="verb">report-uri</spanx> directive, and the connection does
not comply with the UA’s CT Policy (i.e., the connection is not CT-qualified),
and the UA has not already sent an Expect-CT report for this connection, then
the UA SHOULD send a report to the specified <spanx style="verb">report-uri</spanx> as specified in
<xref target="reporting-expect-ct-failure"/>.</t>

</section>
</section>
<section anchor="expect-ct-compliance" title="Evaluating Expect-CT Connections for CT Compliance">

<t>When a UA sets up a TLS connection, the UA determines whether the host is a
Known Expect-CT Host according to its Known Expect-CT Host cache. An Expect-CT
Host is “expired” if the effective expiration date refers to a date in the
past. The UA MUST ignore any expired Expect-CT Hosts in its cache and not treat
such hosts as Known Expect-CT hosts.</t>

<t>When a UA connects to a Known Expect-CT Host using a TLS connection, if the TLS
connection has no errors, then the UA will apply an additional correctness
check: compliance with a CT Policy. A UA should evaluate compliance with its CT
Policy whenever connecting to a Known Expect-CT Host. However, the check can be
skipped for local policy reasons (as discussed in
<xref target="skipping-ct-compliance-checks"/>), or in the event that other checks cause the
UA to terminate the connection before CT compliance is evaluated. For example, a
Public Key Pinning failure <xref target="RFC7469"/> could cause the UA to terminate the
connection before CT compliance is checked. Similarly, if the UA terminates the
connection due to an Expect-CT failure, this could cause the UA to skip
subsequent correctness checks. When the CT compliance check is skipped or
bypassed, Expect-CT reports (<xref target="reporting-expect-ct-failure"/>) will not be sent.</t>

<t>When CT compliance is evaluated for a Known
Expect-CT Host, the UA MUST evaluate compliance when setting up the TLS session,
before beginning an HTTP conversation over the TLS channel.</t>

<t>If a connection to a Known Expect-CT Host violates the UA’s CT policy (i.e., the
connection is not CT-qualified), and if the Known Expect-CT Host’s Expect-CT
metadata indicates an <spanx style="verb">enforce</spanx> configuration, the UA MUST treat the CT
compliance failure as an error. The UA MAY allow the user to bypass the error,
unless connection errors should have no user recourse due to other policies in
effect (such as HSTS, as described in Section 12.1 of <xref target="RFC6797"/>.</t>

<t>If a connection to a Known Expect-CT Host violates the UA’s CT policy, and if the
Known Expect-CT Host’s Expect-CT metadata includes a <spanx style="verb">report-uri</spanx>, the UA SHOULD
send an Expect-CT report to that <spanx style="verb">report-uri</spanx> (<xref target="reporting-expect-ct-failure"/>).</t>

<section anchor="skipping-ct-compliance-checks" title="Skipping CT compliance checks">

<t>It is acceptable for a UA to skip CT compliance checks for some hosts according
to local policy. For example, a UA MAY disable CT compliance checks for hosts
whose validated certificate chain terminates at a user-defined trust anchor,
rather than a trust anchor built-in to the UA (or underlying platform).</t>

<t>If the UA does not evaluate CT compliance, e.g., because the user has elected to
disable it, or because a presented certificate chain chains up to a user-defined
trust anchor, UAs SHOULD NOT send Expect-CT reports.</t>

</section>
</section>
</section>
<section anchor="reporting-expect-ct-failure" title="Reporting Expect-CT Failure">

<t>When the UA attempts to connect to a Known Expect-CT Host and the connection is
not CT-qualified, the UA SHOULD report Expect-CT failures to the <spanx style="verb">report-uri</spanx>,
if any, in the Known Expect-CT Host’s Expect-CT metadata.</t>

<t>When the UA receives an Expect-CT response header field over a connection that
is not CT-qualified, if the UA has not already sent an Expect-CT report for this
connection, then the UA SHOULD report Expect-CT failures to the configured
<spanx style="verb">report-uri</spanx>, if any.</t>

<section anchor="generating-a-violation-report" title="Generating a violation report">

<t>To generate a violation report object, the UA constructs a JSON <xref target="RFC8259"/>
object with the following keys and values:</t>

<t><list style="symbols">
  <t>“date-time”: the value for this key indicates the UTC time that the UA
observed the CT compliance failure. The value is a string formatted according to
Section 5.6, “Internet Date/Time Format”, of <xref target="RFC3339"/>.</t>
  <t>“hostname”: the value is the hostname to which the UA made the original
request that failed the CT compliance check. The value is provided as a string.</t>
  <t>“port”: the value is the port to which the UA made the original request that
failed the CT compliance check. The value is provided as an integer.</t>
  <t>“scheme”: the value is the scheme with which the UA made the original request
that failed the CT compliance check. The value is provided as a string. This
key is optional and is assumed to be “https” if not present.</t>
  <t>“effective-expiration-date”: the value indicates the Effective Expiration Date
(see <xref target="storage-model"/>) for the Expect-CT Host that failed the CT compliance
check, in UTC. The value is provided as a string formatted according to Section
5.6 of <xref target="RFC3339"/> (“Internet Date/Time Format”).</t>
  <t>“served-certificate-chain”: the value is the certificate chain as served by
the Expect-CT Host during TLS session setup. The value is provided as an array
of strings, which MUST appear in the order that the certificates were served;
each string in the array is the Privacy-Enhanced Mail (PEM) representation of
each X.509 certificate as described in <xref target="RFC7468"/>.</t>
  <t>“validated-certificate-chain”: the value is the certificate chain as
constructed by the UA during certificate chain verification. (This may differ
from the value of the “served-certificate-chain” key.) The value is provided as
an array of strings, which MUST appear in the order matching the chain that the
UA validated; each string in the array is the Privacy-Enhanced Mail (PEM)
representation of each X.509 certificate as described in <xref target="RFC7468"/>. The first
certificate in the chain represents the end-entity certificate being verified.
UAs that build certificate chains in more than one way during the validation
process SHOULD send the last chain built.</t>
  <t>“scts”: the value represents the SCTs (if any) that the UA received for the
Expect-CT host and their validation statuses. The value is provided as an array
of JSON objects. The SCTs may appear in any order. Each JSON object in the array
has the following keys:
  <list style="symbols">
      <t>A “version” key, with an integer value. The UA MUST set this value to <spanx style="verb">1</spanx> if
the SCT is in the format defined in Section 3.2 of <xref target="RFC6962"/> and <spanx style="verb">2</spanx> if
it is in the format defined in Section 4.5 of
<xref target="I-D.ietf-trans-rfc6962-bis"/>.</t>
      <t>The “status” key, with a string value that the UA MUST set to one of the
following values: “unknown” (indicating that the UA does not have or does
not trust the public key of the log from which the SCT was issued), “valid”
(indicating that the UA successfully validated the SCT as described in
Section 5.2 of <xref target="RFC6962"/> or Section 8.2.3 of
<xref target="I-D.ietf-trans-rfc6962-bis"/>), or “invalid” (indicating that the SCT
validation failed because of a bad signature or an invalid timestamp).</t>
      <t>The “source” key, with a string value that indicates from where the UA
obtained the SCT, as defined in Section 3 of <xref target="RFC6962"/> and Section 6 of
<xref target="I-D.ietf-trans-rfc6962-bis"/>. The UA MUST set the value to one of
“tls-extension”, “ocsp”, or “embedded”. These correspond to the three
methods of delivering SCTs in the TLS handshake that are described in
Section 3.3 of <xref target="RFC6962"/>.</t>
      <t>The “serialized_sct” key, with a string value. If the value of the “version”
key is <spanx style="verb">1</spanx>, the UA MUST set this value to the base64 encoded <xref target="RFC4648"/>
serialized <spanx style="verb">SignedCertificateTimestamp</spanx> structure from Section 3.2 of
<xref target="RFC6962"/>. The base64 encoding is defined in Section 4 of <xref target="RFC4648"/>.
If the value of the “version” key is <spanx style="verb">2</spanx>, the UA MUST set this
value to the base64 encoded <xref target="RFC4648"/> serialized <spanx style="verb">TransItem</spanx> structure
representing the SCT, as defined in Section 4.5 of
<xref target="I-D.ietf-trans-rfc6962-bis"/>.</t>
    </list></t>
  <t>“failure-mode”: the value indicates whether the Expect-CT report was triggered
by an Expect-CT policy in enforce or report-only mode. The value is provided
as a string. The UA MUST set this value to “enforce” if the Expect-CT metadata
indicates an <spanx style="verb">enforce</spanx> configuration, and “report-only” otherwise.</t>
  <t>“test-report”: the value is set to true if the report is being sent by a
testing client to verify that the report server behaves correctly. The
value is provided as a boolean, and MUST be set to true if the report serves
to test the server’s behavior and can be discarded.</t>
</list></t>

</section>
<section anchor="sending-report" title="Sending a violation report">

<t>The UA SHOULD report Expect-CT failures for Known Expect-CT Hosts: that is, when
a connection to a Known Expect-CT Host does not comply with the UA’s CT Policy
and the host’s Expect-CT metadata contains a <spanx style="verb">report-uri</spanx>.</t>

<t>Additionally, the UA SHOULD report Expect-CT failures for hosts for which it
does not have any stored Expect-CT metadata. That is, when the UA connects to a
host and receives an Expect-CT header field which contains the <spanx style="verb">report-uri</spanx>
directive, the UA SHOULD report an Expect-CT failure if the the connection does
not comply with the UA’s CT Policy.</t>

<t>The steps to report an Expect-CT failure are as follows.</t>

<t><list style="numbers">
  <t>Prepare a JSON object <spanx style="verb">report object</spanx> with the single key “expect-ct-report”,
whose value is the result of generating a violation report object as
described in <xref target="generating-a-violation-report"/>.</t>
  <t>Let <spanx style="verb">report body</spanx> be the JSON stringification of <spanx style="verb">report object</spanx>.</t>
  <t>Let <spanx style="verb">report-uri</spanx> be the value of the <spanx style="verb">report-uri</spanx> directive in the Expect-CT
header field.</t>
  <t>Send an HTTP POST request to <spanx style="verb">report-uri</spanx> with a <spanx style="verb">Content-Type</spanx> header field
of <spanx style="verb">application/expect-ct-report+json</spanx>, and an entity body consisting of
<spanx style="verb">report body</spanx>.</t>
</list></t>

<t>The UA MAY perform other operations as part of sending the HTTP POST request,
for example sending a CORS preflight as part of <xref target="FETCH"/>.</t>

<t>Future versions of this specification may need to modify or extend the Expect-CT
report format. They may do so by defining a new top-level key to contain the
report, replacing the “expect-ct-report” key. <xref target="receiving-report"/> defines how
report servers should handle report formats that they do not support.</t>

</section>
<section anchor="receiving-report" title="Receiving a violation report">

<t>Upon receiving an Expect-CT violation report, the report server MUST respond
with a 2xx (Successful) status code if it can parse the request body as valid
JSON, the report conforms to the format described in
<xref target="generating-a-violation-report"/>, and it recognizes the scheme, hostname, and
port in the “scheme”, “hostname”, and “port” fields of the report. If the report
body cannot be parsed, or the report does not conform to the format described in
<xref target="generating-a-violation-report"/>, or the report server does not expect to
receive reports for the scheme, hostname, or port in the report, then the report
server MUST respond with a 400 Bad Request status code.</t>

<t>As described in <xref target="sending-report"/>, future versions of this specification may
define new report formats that are sent with a different top-level key. If the
report server does not recognize the report format, the report server MUST
respond with a 501 Not Implemented status code.</t>

<t>If the report’s “test-report” key is set to true, the server MAY discard the
report without further processing but MUST still return a 2xx (Successful)
status code. If the “test-report” key is absent or set to false, the server
SHOULD store the report for processing and analysis by the owner of the
Expect-CT Host.</t>

</section>
</section>
<section anchor="usability-considerations" title="Usability Considerations">

<t>When the UA detects a Known Expect-CT Host in violation of the UA’s CT Policy,
end users will experience denials of service. It is advisable for UAs to explain
to users why they cannot access the Expect-CT Host, e.g., in a user interface
that explains that the host’s certificate cannot be validated.</t>

</section>
<section anchor="authoring-considerations" title="Authoring Considerations">

<t>Expect-CT could be specified as a TLS extension or X.509 certificate extension
instead of an HTTP response header field. Using an HTTP header field as the mechanism for
Expect-CT introduces a layering mismatch: for example, the software that
terminates TLS and validates Certificate Transparency information might know
nothing about HTTP. Nevertheless, an HTTP header field was chosen primarily for ease
of deployment. In practice, deploying new certificate extensions requires
certificate authorities to support them, and new TLS extensions require server
software updates, including possibly to servers outside of the site owner’s
direct control (such as in the case of a third-party CDN). Ease of deployment is
a high priority for Expect-CT because it is intended as a temporary transition
mechanism for user agents that are transitioning to universal Certificate
Transparency requirements.</t>

</section>
<section anchor="privacy-considerations" title="Privacy Considerations">

<t>Expect-CT can be used to infer what Certificate Transparency policy a UA is
using, by attempting to retrieve specially-configured websites which pass one
user agents’ policies but not another’s. Note that this consideration is true of
UAs which enforce CT policies without Expect-CT as well.</t>

<t>Additionally, reports submitted to the <spanx style="verb">report-uri</spanx> could reveal information to
a third party about which webpage is being accessed and by which IP address, by
using individual <spanx style="verb">report-uri</spanx> values for individually-tracked pages. This
information could be leaked even if client-side scripting were disabled.</t>

<t>Implementations store state about Known Expect-CT Hosts, and hence which domains
the UA has contacted. Implementations may choose to not store this state subject
to local policy (e.g., in the private browsing mode of a web browser).</t>

<t>Violation reports, as noted in <xref target="reporting-expect-ct-failure"/>, contain
information about the certificate chain that has violated the CT policy. In some
cases, such as organization-wide compromise of the end-to-end security of TLS,
this may include information about the interception tools and design used by the
organization that the organization would otherwise prefer not be disclosed.</t>

<t>Because Expect-CT causes remotely-detectable behavior, it’s advisable that UAs
offer a way for privacy-sensitive end users to clear currently noted Expect-CT
hosts, and allow users to query the current state of Known Expect-CT Hosts.</t>

</section>
<section anchor="security-considerations" title="Security Considerations">

<section anchor="hostile-header-attacks" title="Hostile header attacks">

<t>When UAs support the Expect-CT header field, it becomes a potential vector for hostile
header attacks against site owners. If a site owner uses a certificate issued by
a certificate authority which does not embed SCTs nor serve SCTs via OCSP or TLS
extension, a malicious server operator or attacker could temporarily reconfigure
the host to comply with the UA’s CT policy, and add the Expect-CT header field in
enforcing mode with a long <spanx style="verb">max-age</spanx>.  Implementing user agents would note this
as an Expect-CT Host (see  <xref target="noting-expect-ct"/>). After having done this, the
configuration could then be reverted to not comply with the CT policy, prompting
failures. Note this scenario would require the attacker to have substantial
control over the infrastructure in question, being able to obtain different
certificates, change server software, or act as a man-in-the-middle in
connections.</t>

<t>Site operators can mitigate this situation by one of: reconfiguring their web
server to transmit SCTs using the TLS extension defined in Section 6.5 of
<xref target="I-D.ietf-trans-rfc6962-bis"/>, obtaining a certificate from an alternative
certificate authority which provides SCTs by one of the other methods, or by
waiting for the user agents’ persisted notation of this as an Expect-CT host to
reach its <spanx style="verb">max-age</spanx>. User agents may choose to implement mechanisms for users to
cure this situation, as noted in <xref target="usability-considerations"/>.</t>

</section>
<section anchor="maximum-max-age" title="Maximum max-age">

<t>There is a security trade-off in that low maximum values provide a narrow window
of protection for users that visit the Known Expect-CT Host only infrequently,
while high maximum values might result in a denial of service to a UA in the
event of a hostile header attack, or simply an error on the part of the
site-owner.</t>

<t>There is probably no ideal maximum for the <spanx style="verb">max-age</spanx> directive. Since Expect-CT
is primarily a policy-expansion and investigation technology rather than an
end-user protection, a value on the order of 30 days (2,592,000 seconds) may be
considered a balance between these competing security concerns.</t>

</section>
<section anchor="amplification-attacks" title="Amplification attacks">

<t>Another kind of hostile header attack uses the <spanx style="verb">report-uri</spanx> mechanism on many
hosts not currently exposing SCTs as a method to cause a denial-of-service to
the host receiving the reports. If some highly-trafficked websites emitted
a non-enforcing Expect-CT header field with a <spanx style="verb">report-uri</spanx>, implementing UAs’ reports
could flood the reporting host. It is noted in <xref target="the-report-uri-directive"/> that UAs
should limit the rate at which they emit reports, but an attacker may alter the
Expect-CT header’s fields to induce UAs to submit different reports to different
URIs to still cause the same effect.</t>

</section>
</section>
<section anchor="iana-considerations" title="IANA Considerations">

<section anchor="header-field-registry" title="Header Field Registry">

<t>This document registers the <spanx style="verb">Expect-CT</spanx> header field in the “Permanent Message Header Field Names”
registry located at <eref target="https://www.iana.org/assignments/message-headers">https://www.iana.org/assignments/message-headers</eref>.</t>

<t><list style="hanging">
  <t hangText='Header field name:'>
  Expect-CT</t>
  <t hangText='Applicable protocol:'>
  http</t>
  <t hangText='Status:'>
  experimental</t>
  <t hangText='Author/Change controller:'>
  IETF</t>
  <t hangText='Specification document(s):'>
  This document</t>
  <t hangText='Related information:'>
  (empty)</t>
</list></t>

</section>
<section anchor="media-types-registry" title="Media Types Registry">

<t>The MIME media type for Expect-CT violation reports is
“application/expect-ct-report+json” (which uses the suffix established in
<xref target="RFC6839"/>).</t>

<t><list style="hanging">
  <t hangText='Type name:'>
  application</t>
  <t hangText='Subtype name:'>
  expect-ct-report+json</t>
  <t hangText='Required parameters:'>
  n/a</t>
  <t hangText='Optional parameters:'>
  n/a</t>
  <t hangText='Encoding considerations:'>
  binary</t>
  <t hangText='Security considerations:'>
  See <xref target="security-considerations"/></t>
  <t hangText='Interoperability considerations:'>
  n/a</t>
  <t hangText='Published specification:'>
  This document</t>
  <t hangText='Applications that use this media type:'>
  UAs that implement Certificate Transparency compliance checks and reporting</t>
  <t hangText='Additional information:'>
  </t>
  <t>Deprecated alias names for this type: n/a</t>
  <t>Magic number(s): n/a</t>
  <t>File extension(s): n/a</t>
  <t>Macintosh file type code(s): n/a</t>
  <t hangText='Person &amp; email address to contact for further information:'>
  Emily Stark (estark@google.com)</t>
  <t hangText='Intended usage:'>
  COMMON</t>
  <t hangText='Restrictions on usage:'>
  none</t>
  <t hangText='Author:'>
  Emily Stark (estark@google.com)</t>
  <t hangText='Change controller:'>
  IETF</t>
</list></t>

</section>
</section>


  </middle>

  <back>

    <references title='Normative References'>





<reference anchor="I-D.ietf-trans-rfc6962-bis">
<front>
<title>Certificate Transparency Version 2.0</title>

<author initials='B' surname='Laurie' fullname='Ben Laurie'>
    <organization />
</author>

<author initials='A' surname='Langley' fullname='Adam Langley'>
    <organization />
</author>

<author initials='E' surname='Kasper' fullname='Emilia Kasper'>
    <organization />
</author>

<author initials='E' surname='Messeri' fullname='Eran Messeri'>
    <organization />
</author>

<author initials='R' surname='Stradling' fullname='Rob Stradling'>
    <organization />
</author>

<date month='November' day='6' year='2018' />

<abstract><t>This document describes version 2.0 of the Certificate Transparency (CT) protocol for publicly logging the existence of Transport Layer Security (TLS) server certificates as they are issued or observed, in a manner that allows anyone to audit certification authority (CA) activity and notice the issuance of suspect certificates as well as to audit the certificate logs themselves.  The intent is that eventually clients would refuse to honor certificates that do not appear in a log, effectively forcing CAs to add all issued certificates to the logs.  This document obsoletes RFC 6962.  It also specifies a new TLS extension that is used to send various CT log artifacts.  Logs are network services that implement the protocol operations for submissions and queries that are defined in this document.</t></abstract>

</front>

<seriesInfo name='Internet-Draft' value='draft-ietf-trans-rfc6962-bis-30' />
<format type='TXT'
        target='http://www.ietf.org/internet-drafts/draft-ietf-trans-rfc6962-bis-30.txt' />
</reference>



<reference  anchor="RFC6797" target='https://www.rfc-editor.org/info/rfc6797'>
<front>
<title>HTTP Strict Transport Security (HSTS)</title>
<author initials='J.' surname='Hodges' fullname='J. Hodges'><organization /></author>
<author initials='C.' surname='Jackson' fullname='C. Jackson'><organization /></author>
<author initials='A.' surname='Barth' fullname='A. Barth'><organization /></author>
<date year='2012' month='November' />
<abstract><t>This specification defines a mechanism enabling web sites to declare themselves accessible only via secure connections and/or for users to be able to direct their user agent(s) to interact with given sites only over secure connections.  This overall policy is referred to as HTTP Strict Transport Security (HSTS).  The policy is declared by web sites via the Strict-Transport-Security HTTP response header field and/or by other means, such as user agent configuration, for example. [STANDARDS-TRACK]</t></abstract>
</front>
<seriesInfo name='RFC' value='6797'/>
<seriesInfo name='DOI' value='10.17487/RFC6797'/>
</reference>



<reference  anchor="RFC7469" target='https://www.rfc-editor.org/info/rfc7469'>
<front>
<title>Public Key Pinning Extension for HTTP</title>
<author initials='C.' surname='Evans' fullname='C. Evans'><organization /></author>
<author initials='C.' surname='Palmer' fullname='C. Palmer'><organization /></author>
<author initials='R.' surname='Sleevi' fullname='R. Sleevi'><organization /></author>
<date year='2015' month='April' />
<abstract><t>This document defines a new HTTP header that allows web host operators to instruct user agents to remember (&quot;pin&quot;) the hosts' cryptographic identities over a period of time.  During that time, user agents (UAs) will require that the host presents a certificate chain including at least one Subject Public Key Info structure whose fingerprint matches one of the pinned fingerprints for that host.  By effectively reducing the number of trusted authorities who can authenticate the domain during the lifetime of the pin, pinning may reduce the incidence of man-in-the-middle attacks due to compromised Certification Authorities.</t></abstract>
</front>
<seriesInfo name='RFC' value='7469'/>
<seriesInfo name='DOI' value='10.17487/RFC7469'/>
</reference>



<reference  anchor="RFC6962" target='https://www.rfc-editor.org/info/rfc6962'>
<front>
<title>Certificate Transparency</title>
<author initials='B.' surname='Laurie' fullname='B. Laurie'><organization /></author>
<author initials='A.' surname='Langley' fullname='A. Langley'><organization /></author>
<author initials='E.' surname='Kasper' fullname='E. Kasper'><organization /></author>
<date year='2013' month='June' />
<abstract><t>This document describes an experimental protocol for publicly logging the existence of Transport Layer Security (TLS) certificates as they are issued or observed, in a manner that allows anyone to audit certificate authority (CA) activity and notice the issuance of suspect certificates as well as to audit the certificate logs themselves.  The intent is that eventually clients would refuse to honor certificates that do not appear in a log, effectively forcing CAs to add all issued certificates to the logs.</t><t>Logs are network services that implement the protocol operations for submissions and queries that are defined in this document.</t></abstract>
</front>
<seriesInfo name='RFC' value='6962'/>
<seriesInfo name='DOI' value='10.17487/RFC6962'/>
</reference>



<reference  anchor="RFC2119" target='https://www.rfc-editor.org/info/rfc2119'>
<front>
<title>Key words for use in RFCs to Indicate Requirement Levels</title>
<author initials='S.' surname='Bradner' fullname='S. Bradner'><organization /></author>
<date year='1997' month='March' />
<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" target='https://www.rfc-editor.org/info/rfc8174'>
<front>
<title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
<author initials='B.' surname='Leiba' fullname='B. Leiba'><organization /></author>
<date year='2017' month='May' />
<abstract><t>RFC 2119 specifies common key words that may be used in protocol  specifications.  This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the  defined special meanings.</t></abstract>
</front>
<seriesInfo name='BCP' value='14'/>
<seriesInfo name='RFC' value='8174'/>
<seriesInfo name='DOI' value='10.17487/RFC8174'/>
</reference>



<reference  anchor="RFC7230" target='https://www.rfc-editor.org/info/rfc7230'>
<front>
<title>Hypertext Transfer Protocol (HTTP/1.1): Message Syntax and Routing</title>
<author initials='R.' surname='Fielding' fullname='R. Fielding' role='editor'><organization /></author>
<author initials='J.' surname='Reschke' fullname='J. Reschke' role='editor'><organization /></author>
<date year='2014' month='June' />
<abstract><t>The Hypertext Transfer Protocol (HTTP) is a stateless application-level protocol for distributed, collaborative, hypertext information systems.  This document provides an overview of HTTP architecture and its associated terminology, defines the &quot;http&quot; and &quot;https&quot; Uniform Resource Identifier (URI) schemes, defines the HTTP/1.1 message syntax and parsing requirements, and describes related security concerns for implementations.</t></abstract>
</front>
<seriesInfo name='RFC' value='7230'/>
<seriesInfo name='DOI' value='10.17487/RFC7230'/>
</reference>



<reference  anchor="RFC5234" target='https://www.rfc-editor.org/info/rfc5234'>
<front>
<title>Augmented BNF for Syntax Specifications: ABNF</title>
<author initials='D.' surname='Crocker' fullname='D. Crocker' role='editor'><organization /></author>
<author initials='P.' surname='Overell' fullname='P. Overell'><organization /></author>
<date year='2008' month='January' />
<abstract><t>Internet technical specifications often need to define a formal syntax.  Over the years, a modified version of Backus-Naur Form (BNF), called Augmented BNF (ABNF), has been popular among many Internet specifications.  The current specification documents ABNF. It balances compactness and simplicity with reasonable representational power.  The differences between standard BNF and ABNF involve naming rules, repetition, alternatives, order-independence, and value ranges.  This specification also supplies additional rule definitions and encoding for a core lexical analyzer of the type common to several Internet specifications.  [STANDARDS-TRACK]</t></abstract>
</front>
<seriesInfo name='STD' value='68'/>
<seriesInfo name='RFC' value='5234'/>
<seriesInfo name='DOI' value='10.17487/RFC5234'/>
</reference>



<reference  anchor="RFC3986" target='https://www.rfc-editor.org/info/rfc3986'>
<front>
<title>Uniform Resource Identifier (URI): Generic Syntax</title>
<author initials='T.' surname='Berners-Lee' fullname='T. Berners-Lee'><organization /></author>
<author initials='R.' surname='Fielding' fullname='R. Fielding'><organization /></author>
<author initials='L.' surname='Masinter' fullname='L. Masinter'><organization /></author>
<date year='2005' month='January' />
<abstract><t>A Uniform Resource Identifier (URI) is a compact sequence of characters that identifies an abstract or physical resource.  This specification defines the generic URI syntax and a process for resolving URI references that might be in relative form, along with guidelines and security considerations for the use of URIs on the Internet.  The URI syntax defines a grammar that is a superset of all valid URIs, allowing an implementation to parse the common components of a URI reference without knowing the scheme-specific requirements of every possible identifier.  This specification does not define a generative grammar for URIs; that task is performed by the individual specifications of each URI scheme.  [STANDARDS-TRACK]</t></abstract>
</front>
<seriesInfo name='STD' value='66'/>
<seriesInfo name='RFC' value='3986'/>
<seriesInfo name='DOI' value='10.17487/RFC3986'/>
</reference>



<reference  anchor="RFC7234" target='https://www.rfc-editor.org/info/rfc7234'>
<front>
<title>Hypertext Transfer Protocol (HTTP/1.1): Caching</title>
<author initials='R.' surname='Fielding' fullname='R. Fielding' role='editor'><organization /></author>
<author initials='M.' surname='Nottingham' fullname='M. Nottingham' role='editor'><organization /></author>
<author initials='J.' surname='Reschke' fullname='J. Reschke' role='editor'><organization /></author>
<date year='2014' month='June' />
<abstract><t>The Hypertext Transfer Protocol (HTTP) is a stateless \%application- level protocol for distributed, collaborative, hypertext information systems.  This document defines HTTP caches and the associated header fields that control cache behavior or indicate cacheable response messages.</t></abstract>
</front>
<seriesInfo name='RFC' value='7234'/>
<seriesInfo name='DOI' value='10.17487/RFC7234'/>
</reference>



<reference  anchor="RFC5280" target='https://www.rfc-editor.org/info/rfc5280'>
<front>
<title>Internet X.509 Public Key Infrastructure Certificate and Certificate Revocation List (CRL) Profile</title>
<author initials='D.' surname='Cooper' fullname='D. Cooper'><organization /></author>
<author initials='S.' surname='Santesson' fullname='S. Santesson'><organization /></author>
<author initials='S.' surname='Farrell' fullname='S. Farrell'><organization /></author>
<author initials='S.' surname='Boeyen' fullname='S. Boeyen'><organization /></author>
<author initials='R.' surname='Housley' fullname='R. Housley'><organization /></author>
<author initials='W.' surname='Polk' fullname='W. Polk'><organization /></author>
<date year='2008' month='May' />
<abstract><t>This memo profiles the X.509 v3 certificate and X.509 v2 certificate revocation list (CRL) for use in the Internet.  An overview of this approach and model is provided as an introduction.  The X.509 v3 certificate format is described in detail, with additional information regarding the format and semantics of Internet name forms.  Standard certificate extensions are described and two Internet-specific extensions are defined.  A set of required certificate extensions is specified.  The X.509 v2 CRL format is described in detail along with standard and Internet-specific extensions.  An algorithm for X.509 certification path validation is described.  An ASN.1 module and examples are provided in the appendices.  [STANDARDS-TRACK]</t></abstract>
</front>
<seriesInfo name='RFC' value='5280'/>
<seriesInfo name='DOI' value='10.17487/RFC5280'/>
</reference>



<reference  anchor="RFC8259" target='https://www.rfc-editor.org/info/rfc8259'>
<front>
<title>The JavaScript Object Notation (JSON) Data Interchange Format</title>
<author initials='T.' surname='Bray' fullname='T. Bray' role='editor'><organization /></author>
<date year='2017' month='December' />
<abstract><t>JavaScript Object Notation (JSON) is a lightweight, text-based, language-independent data interchange format.  It was derived from the ECMAScript Programming Language Standard.  JSON defines a small set of formatting rules for the portable representation of structured data.</t><t>This document removes inconsistencies with other specifications of JSON, repairs specification errors, and offers experience-based interoperability guidance.</t></abstract>
</front>
<seriesInfo name='STD' value='90'/>
<seriesInfo name='RFC' value='8259'/>
<seriesInfo name='DOI' value='10.17487/RFC8259'/>
</reference>



<reference  anchor="RFC3339" target='https://www.rfc-editor.org/info/rfc3339'>
<front>
<title>Date and Time on the Internet: Timestamps</title>
<author initials='G.' surname='Klyne' fullname='G. Klyne'><organization /></author>
<author initials='C.' surname='Newman' fullname='C. Newman'><organization /></author>
<date year='2002' month='July' />
<abstract><t>This document defines a date and time format for use in Internet protocols that is a profile of the ISO 8601 standard for representation of dates and times using the Gregorian calendar.</t></abstract>
</front>
<seriesInfo name='RFC' value='3339'/>
<seriesInfo name='DOI' value='10.17487/RFC3339'/>
</reference>



<reference  anchor="RFC7468" target='https://www.rfc-editor.org/info/rfc7468'>
<front>
<title>Textual Encodings of PKIX, PKCS, and CMS Structures</title>
<author initials='S.' surname='Josefsson' fullname='S. Josefsson'><organization /></author>
<author initials='S.' surname='Leonard' fullname='S. Leonard'><organization /></author>
<date year='2015' month='April' />
<abstract><t>This document describes and discusses the textual encodings of the Public-Key Infrastructure X.509 (PKIX), Public-Key Cryptography Standards (PKCS), and Cryptographic Message Syntax (CMS).  The textual encodings are well-known, are implemented by several applications and libraries, and are widely deployed.  This document articulates the de facto rules by which existing implementations operate and defines them so that future implementations can interoperate.</t></abstract>
</front>
<seriesInfo name='RFC' value='7468'/>
<seriesInfo name='DOI' value='10.17487/RFC7468'/>
</reference>



<reference  anchor="RFC4648" target='https://www.rfc-editor.org/info/rfc4648'>
<front>
<title>The Base16, Base32, and Base64 Data Encodings</title>
<author initials='S.' surname='Josefsson' fullname='S. Josefsson'><organization /></author>
<date year='2006' month='October' />
<abstract><t>This document describes the commonly used base 64, base 32, and base 16 encoding schemes.  It also discusses the use of line-feeds in encoded data, use of padding in encoded data, use of non-alphabet characters in encoded data, use of different encoding alphabets, and canonical encodings.  [STANDARDS-TRACK]</t></abstract>
</front>
<seriesInfo name='RFC' value='4648'/>
<seriesInfo name='DOI' value='10.17487/RFC4648'/>
</reference>



<reference  anchor="RFC6839" target='https://www.rfc-editor.org/info/rfc6839'>
<front>
<title>Additional Media Type Structured Syntax Suffixes</title>
<author initials='T.' surname='Hansen' fullname='T. Hansen'><organization /></author>
<author initials='A.' surname='Melnikov' fullname='A. Melnikov'><organization /></author>
<date year='2013' month='January' />
<abstract><t>A content media type name sometimes includes partitioned meta- information distinguished by a structured syntax to permit noting an attribute of the media as a suffix to the name.  This document defines several structured syntax suffixes for use with media type registrations.  In particular, it defines and registers the &quot;+json&quot;, &quot;+ber&quot;, &quot;+der&quot;, &quot;+fastinfoset&quot;, &quot;+wbxml&quot; and &quot;+zip&quot; structured syntax suffixes, and provides a media type structured syntax suffix registration form for the &quot;+xml&quot; structured syntax suffix.  This document  is not an Internet Standards Track specification; it is published for  informational purposes.</t></abstract>
</front>
<seriesInfo name='RFC' value='6839'/>
<seriesInfo name='DOI' value='10.17487/RFC6839'/>
</reference>




    </references>

    <references title='Informative References'>

<reference anchor="FETCH" target="https://fetch.spec.whatwg.org">
  <front>
    <title>Fetch - Living Standard</title>
    <author >
      <organization>WHATWG</organization>
    </author>
    <date year="n.d."/>
  </front>
</reference>




<reference  anchor="RFC8446" target='https://www.rfc-editor.org/info/rfc8446'>
<front>
<title>The Transport Layer Security (TLS) Protocol Version 1.3</title>
<author initials='E.' surname='Rescorla' fullname='E. Rescorla'><organization /></author>
<date year='2018' month='August' />
<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>




    </references>


<section anchor="changes" title="Changes">

<section anchor="since-07" title="Since -07">

<t><list style="symbols">
  <t>Editorial changes</t>
  <t>Specify that the end-entity certificate appears first in the
“validated-certificate-chain” field of an Expect-CT report.</t>
  <t>Define how report format can be extended by future versions of this
specification.</t>
  <t>Add optional “scheme” key to report format.</t>
  <t>Specify exact status codes for report server errors.</t>
  <t>Limit report-uris to HTTPS only.</t>
  <t>Note that this version of Expect-CT is only compatible with RFC 6962 and
6962-bis, not any future versions of CT.</t>
</list></t>

</section>
<section anchor="since-06" title="Since -06">

<t><list style="symbols">
  <t>Editorial changes</t>
</list></t>

</section>
<section anchor="since-05" title="Since -05">

<t><list style="symbols">
  <t>Remove SHOULD requirement that UAs disallow certificate error overrides for
Known Expect-CT Hosts.</t>
  <t>Remove restriction that Expect-CT Hosts cannot be IP addresses.</t>
  <t>Editorial changes</t>
</list></t>

</section>
<section anchor="since-04" title="Since -04">

<t><list style="symbols">
  <t>Editorial changes</t>
</list></t>

</section>
<section anchor="since-03" title="Since -03">

<t><list style="symbols">
  <t>Editorial changes</t>
</list></t>

</section>
<section anchor="since-02" title="Since -02">

<t><list style="symbols">
  <t>Add concept of test reports and specify that servers must respond with 2xx
status codes to valid reports.</t>
  <t>Add “failure-mode” key to reports to allow report servers to distinguish
report-only from enforced failures.</t>
</list></t>

</section>
<section anchor="since-01" title="Since -01">

<t><list style="symbols">
  <t>Change SCT reporting format to support both RFC 6962 and 6962-bis SCTs.</t>
</list></t>

</section>
<section anchor="since-00" title="Since -00">

<t><list style="symbols">
  <t>Editorial changes</t>
  <t>Change Content-Type header of reports to ‘application/expect-ct-report+json’</t>
  <t>Update header field syntax to match convention (issue #327)</t>
  <t>Reference RFC 6962-bis instead of RFC 6962</t>
</list></t>

</section>
</section>


  </back>

<!-- ##markdown-source:
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
D4eEjqTbwor9vmg7SUzaf6/+PwDQwyOQkgAA

-->

</rfc>

