Expect-CT 头

已弃用:此特性不再推荐。虽然某些浏览器可能仍然支持它,但它可能已经从相关的网络标准中删除,可能正在删除过程中,或者可能仅为兼容性目的而保留。请避免使用它,如果可能,请更新现有代码;请参阅本页底部的兼容性表格以指导您的决策。请注意,此特性可能随时停止工作。

Expect-CT 响应头允许站点选择启用证书透明度 (CT) 要求的报告和/或强制执行。证书透明度 (CT) 旨在防止该站点误发的证书被 undetected。

只有 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="" 可选

用户代理应报告 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 策略。

规范

规范
HTTP 的 Expect-CT 扩展
# 第 2.1 节

浏览器兼容性

另见