在 Internet 上,我可以找到多年来所做的一些 声明,声称通过 HTTPS 提供 X.509 CRL 是一种不好的做法,因为要么
- 在检查 TLS 证书和
- 考虑到 CRL 根据定义是由 CA 签署的,并且是非机密工件,这只是一种资源浪费。
然而:
推荐的替代方案是 OCSP(可能与各种类型的装订结合使用)。然而,OSCP 响应也由一个可撤销的实体签名,其状态也需要检查,所以我不明白这如何解决鸡与蛋的问题。也许,如果我们假设 PKI 设计考虑到避免状态检查的循环依赖的需要,那么实际上不存在任何先有鸡还是先有蛋的问题。
CRL 已签名,但在 CRL 本身的有效期内仍不提供重放保护。换句话说,您无法在 CRL 的有效期结束之前可靠地对其发出紧急更新,因为强大的攻击者实际上可以操纵所有传出的普通 HTTP 请求,并在该期间用旧的紧急 CRL 替换新的紧急 CRL。HTTPS 至少会在一定程度上防止这种情况发生。
我还读到某些实现只是拒绝通过 HTTPS ( Microsoft ) 检索 CRL:这可能是避免它的一个务实的好理由。然而,这样一来,我们也在延续一种有问题的做法。
我在哪里弄错了吗?
是时候重新审视对通过 HTTPS 分发 CRL 的偏见了吗?考虑到仅 HTTPS 的强大趋势正在持续,预测在某些环境中仅 HTTP 请求可能会在网络级别被阻止并非不合理。