Expect-CT

已弃用:此功能不再推荐。尽管某些浏览器可能仍然支持它,但它可能已被从相关的 Web 标准中删除,或者正在被删除,或者可能仅出于兼容性目的而保留。避免使用它,如果可能,请更新现有代码;请参见此页面底部的兼容性表 以指导您的决定。请注意,此功能可能随时停止工作。

Expect-CT 标头允许网站选择加入证书透明度 要求的报告和/或执行。证书透明度 (CT) 旨在防止对该网站的错误颁发的证书的使用被忽视。

只有 Google Chrome 和其他基于 Chromium 的浏览器实现了 Expect-CT,而 Chromium 已从版本 107 中弃用了该标头,因为 Chromium 现在默认情况下强制执行 CT。请参阅Chrome 平台状态 更新。

CT 要求可以通过以下任何一种机制来满足

  • X.509v3 证书扩展,允许嵌入由各个日志颁发的已签署证书时间戳。大多数由公认的 CA 颁发并在网上使用的 TLS 证书包含嵌入的 CT。
  • 握手期间发送的类型为 signed_certificate_timestamp 的 TLS 扩展
  • 支持 OCSP 钉扎(即 status_request TLS 扩展)并提供 SignedCertificateTimestampList

注意:当网站启用 Expect-CT 标头时,它们请求浏览器检查该网站的任何证书是否出现在公共 CT 日志 中。

注意:浏览器忽略通过 HTTP 的 Expect-CT 标头;该标头仅对 HTTPS 连接有效。

注意:Expect-CT 自 2021 年 6 月起基本上已过时。自 2018 年 5 月起,所有新的 TLS 证书都应默认支持 SCT。在 2018 年 3 月之前颁发的证书允许的有效期为 39 个月,因此它们已于 2021 年 6 月到期。Chromium 计划弃用 Expect-CT 标头,并最终将其删除。

标头类型 响应标头
禁止的标头名称

语法

http
Expect-CT: report-uri="<uri>",
           enforce,
           max-age=<age>

指令

max-age

接收 Expect-CT 标头字段后的秒数,在此期间,用户代理应将接收消息的主机视为已知的 Expect-CT 主机。

如果缓存接收的值大于它可以表示的值,或者如果它的后续任何计算溢出,则缓存将认为此值为 2,147,483,648 (2^31) 或它可以表示的最大正整数。

report-uri="<uri>" 可选

用户代理应报告 Expect-CT 错误的 URI。

当与 enforce 指令一起出现时,该配置被称为“强制执行和报告”配置,它向用户代理发出信号,即应强制执行对证书透明度策略的遵守以及应报告违规行为。

enforce 可选

向用户代理发出信号,表明应强制执行对证书透明度策略的遵守(而不是仅报告遵守情况),并且用户代理应拒绝违反其证书透明度策略的未来连接。

enforce 指令和 report-uri 指令都存在时,该配置被称为“强制执行和报告”配置,它向用户代理发出信号,即应强制执行对证书透明度策略的遵守,并且应报告违规行为。

示例

以下示例指定了对证书透明度的强制执行,持续 24 小时,并将违规行为报告给 foo.example.com

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

注意

手动添加到信任存储的根 CA 会覆盖并抑制 Expect-CT 报告/强制执行。

浏览器不会记住 Expect-CT 策略,除非该网站已“证明”它可以提供满足证书透明度要求的证书。浏览器在确定哪个 CT 日志被认为是可信的以供证书已记录到方面,实施了自己的信任模型。

Chrome 的构建旨在在安装的构建日期后的 10 周停止强制执行 Expect-CT 策略。

规范

规范
Expect-CT 扩展用于 HTTP
# section-2.1

浏览器兼容性

BCD 表仅在浏览器中加载