OCSP 装订与证书透明度
配置 OCSP 装订以提升性能,并了解证书透明度日志如何支持审计。
OCSP 装订与证书透明度 是 CoddyKit 上的免费 Cryptology Academy 课时。 这是第 3 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Cryptology Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Cryptology Academy 课程共包含 4 节课。
CRL 问题
证书吊销列表(CRL)是由 CA 发布的文件,其中列出所有已吊销的证书。CRL 存在多项问题:会随着时间推移而变大,客户端必须完整下载,时效性有限(按计划发布),并且浏览器过去在获取 CRL 失败时通常会软失败(仍接受证书),因此在实际使用中吊销机制并不可靠。
使用 OCSP 实时检查状态
在线证书状态协议(OCSP,RFC 6960)允许客户端实时查询 CA 的 OCSP 响应器,以获取特定证书的吊销状态。OCSP 响应会指出证书处于“good”、“revoked”或“unknown”状态,并由 CA 签名。这比下载完整 CRL 更高效。
OCSP 的隐私问题
标准 OCSP 存在一个严重的隐私缺陷:客户端必须向 CA 的 OCSP 响应器发送正在检查的证书序列号,这会向 CA(或网络观察者)暴露用户正在访问哪些网站以及访问时间。这样一来,在证书颁发机构层面就形成了侵犯用户隐私的监控机制。
OCSP 装订机制
OCSP 装订(RFC 6066)通过让服务器预先从 CA 获取 OCSP 响应并将其缓存来解决隐私问题。在 TLS 握手期间,服务器会将此缓存响应“装订”到握手中,直接交付给客户端。客户端无需直接联系 CA 即可获得最新的吊销状态。
配置 OCSP 装订
Nginx 的 OCSP 装订配置要求在服务器区块中设置:“ssl_stapling on; ssl_stapling_verify on; resolver 8.8.8.8;”。ssl_certificate_by_lua_block 或 ssl_trusted_certificate 指令会提供用于验证的证书链。Apache 要求在 VirtualHost 中设置“SSLUseStapling on”。两种服务器都会缓存响应,并在响应过期前刷新。
OCSP Must-Staple 扩展
OCSP Must-Staple X.509 扩展(RFC 7633)会告知浏览器,该证书对应的服务器始终会装订 OCSP 响应。如果浏览器连接服务器时没有收到装订的响应,就会拒绝连接。这可以防止持有已吊销证书的攻击者阻断 OCSP 响应,从而迫使浏览器执行软失败。
证书透明度概念
证书透明度(CT)是一种系统,要求所有公开信任的 CA 在交付证书前,将其签发的每张证书记录到公开可审计、只能追加的日志中。这些日志使域名所有者、研究人员和监控方能够发现针对任何域名误签发或欺诈获得的证书。
CT 签名证书时间戳
当 CA 向 CT 日志提交证书时,日志会返回签名证书时间戳(SCT)。SCT 是一份经过密码学签名的承诺,表示该证书已被记录。SCT 可以嵌入证书本身、通过 TLS 扩展交付,或装订在 OCSP 响应中。Chrome 要求至少有两个 SCT 才能信任证书。
Chrome 的 CT 要求
自 2018 年 4 月起,Google Chrome 要求所有公开信任的 TLS 证书都必须具备证书透明度。没有有效 SCT 的证书会被 Chrome 拒绝,并显示证书错误。由于任何证书被 Chrome 拒绝的 CA 都无法作为公共 CA 运行,这项要求实际上促使所有主要 CA 都记录 CT 日志。
通过 CT 检测误签发证书
CT 日志使任何人都能监控针对其域名签发的证书。crt.sh 和 Facebook 的 CT Monitor 等服务允许域名所有者搜索所有 CT 日志,查找主题或 SAN 字段中包含其域名的证书。未经授权的证书签发(例如由被入侵的 CA 签发,或通过 BGP 劫持完成)可以在数小时内被发现。
CT 日志生态系统
CT 日志由多个独立组织运营,包括 Google(Argon、Xenon)、Cloudflare(Nimbus)、DigiCert、Sectigo 等。多个日志运营方可以防止任何单一实体压制已记录的证书。浏览器要求 SCT 来自其批准列表中的日志,从而对受信任的日志进行质量控制。
检查 OCSP 装订
与标准 OCSP 相比,OCSP 装订解决了什么问题?
课程回顾:OCSP 与 CT
CRL 体积庞大且容易过时;OCSP 提供实时吊销状态,但会将浏览数据泄露给 CA。OCSP 装订在 TLS 握手期间交付预先获取的吊销状态,从而保护隐私。OCSP Must-Staple 可防止绕过软失败。证书透明度会记录所有签发的证书,并通过 SCT 实现对误签发证书的检测。Chrome 自 2018 年起要求使用 CT。
用 AI 导师学习 Cryptology Academy — 免费
在浏览器中编写并运行真实代码,获得全天候 AI 导师的即时帮助,并在网页或应用中继续学习。
- 课程
- 67
- 课程
- 261
常见问题解答
「OCSP 装订与证书透明度」课时是免费的吗?
是的 — 「OCSP 装订与证书透明度」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Cryptology Academy 课程的其余内容,请升级到 CoddyKit PRO。 Cryptology Academy 课程共包含 4 节课。
「OCSP 装订与证书透明度」这节课中我会学到什么?
配置 OCSP 装订以提升性能,并了解证书透明度日志如何支持审计。 你通过在浏览器中直接运行的动手代码来练习 Cryptology Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。
学习 Cryptology Academy 需要有经验吗?
无需任何先前经验。CoddyKit 上的 Cryptology Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 3 节课,共 4 节。
「OCSP 装订与证书透明度」课时需要多长时间?
大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。
我能在这节 Cryptology Academy 课中编写并运行代码吗?
能。每节 Cryptology Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。
此课程中的所有课时
- OpenSSL 命令行基础
- 创建和管理证书链
- OCSP 装订与证书透明度
- Let's Encrypt 与 ACME 协议自动化