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.