证书透明:公开审计驱动的信任
证书透明度(Certificate Transparency, CT)是 Google 于 2013 年提出、2018 年起在 Chrome 中强制要求的公开审计框架。其核心思想质朴:公开 CA 签发的每张证书都应记录在仅追加(append-only)的公开日志中,域名所有者可监控是否有未授权证书签发,浏览器可要求证书提供已记录证明(SCT, Signed Certificate Timestamp)。
CT 的三个核心组件:
日志服务器(Log Server):运行仅追加 Merkle 树,接受证书提交并返回 SCT。证书提交后保证在 MMD(Maximum Merge Delay,通常 24 小时)内包含进日志。日志定期发布签名的树头(STH, Signed Tree Head),供其他组件审计。
监控器(Monitor):持续扫描 CT 日志,为特定域名检测异常——如某证书突然由新的 CA 签发、使用不同的公钥、出现未授权的 SAN 域名。Facebook 的 Certificate Transparency Monitor 和 Sector 的 crt.sh 是公开可用的监控工具。
审计器(Auditor):验证日志的行为一致性(通过 STH 比对确保日志未呈现分歧视图)和包含性证明(通过 Merkle Audit Proof 验证特定证书确实在日志中)。
CT 的工程效果显著:2015 年 Google 工程师通过 CT 发现赛门铁克(Symantec)下属的 Thawte 签发了 Google 未授权的证书,触发了对赛门铁克的大规模审计,最终导致其在 Chrome 中被不信任。CT 的设计哲学可概括为「信任但要验证」——不指望 CA 永不犯错,而通过公开透明使错误可被发现、可被审计、可被追究。
ACME 与自动化证书管理:Let's Encrypt 的革命
ACME(Automated Certificate Management Environment, RFC 8555)协议由 Internet Security Research Group(ISRG)主导开发,Let's Encrypt 作为其首个也是最大的实现自 2016 年 4 月上线以来彻底改变了 TLS 证书的获取与部署范式。