跳到主要内容

1. 引言

本文档定义了一个新的 HTTP 头字段 ([RFC9110], 第 6.3 节), 使 UA 能够识别那些期望在后续 Transport Layer Security (TLS) [RFC8446] 连接中存在 Signed Certificate Timestamps (SCTs) [RFC9162] 的 Web 主机.

提供 Expect-CT 头字段的 Web 主机会被 UA 记录为 "Known Expect-CT Hosts". UA 会评估到 Known Expect-CT Host 的每个连接是否符合该 UA 的 Certificate Transparency (CT) Policy. 如果连接违反 CT Policy, UA 会向 Expect-CT Host 配置的 URI 发送报告和/或使连接失败, 具体取决于 Expect-CT Host 选择的配置.

如果配置错误, Expect-CT 可能导致非预期的连接失败. 例如, 主机部署 Expect-CT 后切换到一个合法但未记录在 Certificate Transparency 日志中的证书, 或者 Web 主机运营者误以为其证书符合所有 UA 的 CT 策略. 建议 Web 主机运营者在部署 Expect-CT 时采取预防措施, 使用报告功能并逐步增加 UA 将该主机视为 Known Expect-CT Host 的时间间隔. 这些预防措施可以帮助 Web 主机运营者确认其 Expect-CT 部署不会造成非预期的连接失败.

Expect-CT 是一种 trust-on-first-use (TOFU) 机制. UA 第一次连接到某个主机时, 缺少要求该连接提供 SCT 的必要信息. 因此, UA 无法检测并阻止针对其首次连接到该主机的攻击. 尽管如此, Expect-CT 仍然有价值: 1) 允许 UA 在初始通信之后检测未记录证书的使用, 2) 让 Web 主机确信 UA 只信任可公开审计的证书.

Expect-CT 类似于 HTTP Strict Transport Security (HSTS) [RFC6797] 和 HTTP Public Key Pinning (HPKP) [RFC7469]. HSTS 允许网站声明自身只能通过安全连接访问, HPKP 允许网站声明其密码学身份. 类似地, Expect-CT 允许网站声明自身只能通过符合 CT Policy 的连接访问.

本 Expect-CT 规范兼容 [RFC6962] 和 [RFC9162], 但不一定兼容 Certificate Transparency 的未来版本. 对于使用 Certificate Transparency 未来版本的 Web 主机, UA 将忽略其 Expect-CT 头字段, 除非本文档的未来版本规定了应如何处理这些头字段.

1.1. 需求语言

本文档中的关键词 "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", 和 "OPTIONAL" 只有在以此处所示的全大写形式出现时, 才应按照 BCP 14 [RFC2119] [RFC8174] 中的描述解释.

1.2. 术语

本节定义术语.

"Certificate Transparency Policy"

UA 定义的一项策略, 涉及与 TLS 连接相关联的 Signed Certificate Timestamps 的数量, 来源和交付机制. 该策略定义了连接必须满足的属性, 以便 UA 将其视为 CT 合格.

"Certificate Transparency Qualified"

描述 UA 已确定提供了足够数量和质量的 Signed Certificate Timestamps 的 TLS 连接.

"CT Qualified"

"Certificate Transparency Qualified" 的缩写.

"CT Policy"

"Certificate Transparency Policy" 的缩写.

"Effective Expect-CT Date"

UA 针对给定主机观察到有效 Expect-CT 头字段的时间.

"Expect-CT Host"

实现 Expect-CT 的 HTTP 服务器侧行为并符合规范的主机. 这意味着 Expect-CT Host 会在通过安全传输发送的 HTTP 响应消息中返回 Expect-CT 响应头字段. 在本规范中, 术语 "host" 等同于 "server".

"Known Expect-CT Host"

UA 已记录为此类主机的 Expect-CT Host. 详见第 2.3.2.1 节.

"User Agent (UA)"

就本规范而言, UA 是通常由用户主动操作的 HTTP 客户端应用程序 [RFC9110].

"Unknown Expect-CT Host"

UA 尚未记录的 Expect-CT Host.