X.509 证书撤销列表包含一个字段,该字段指定预计何时发布下一个此类列表。我试图弄清楚这个领域的重要性......我知道有时证书被放在“不使用”列表中,并且需要不断更新。但我也觉得 CRL 会定期更新,那么拥有这个字段有什么意义呢?为什么不使用固定的时间表?
x.509 CRL:下一次更新?
信息安全
证书
公钥基础设施
x.509
2021-08-25 19:16:00
2个回答
该字段用于传达两种不同的语义:nextUpdate
- 更新的 CRL 应该可用的日期,因此值得重新下载(类似地,在
nextUpdate字段中给出的日期之前,缓存的 CRL 应该被认为是最新的); - 给定 CRL 应被视为过时的日期。
预计 CRL 会重叠,以便过渡平稳且网络流量全天传播。通常,CA 会每小时生成一个新的 CRL(以便获得新的信息),但会“允许”给定的 CRL 在一天(24 小时)内有效。由于 CRL 可能有点大,因此下载它的成本很高,因此如果没有实际用途,实现者宁愿不要经常这样做。但是由于每个 CA 都有自己的策略,因此通用证书验证器无法先验地知道给定 CA 使用哪种调度;它必须通过证书和 CRL 中的数据来学习它。
第一个含义是X.509的要求。但是,每个人都将它用于第二个含义。实际上,X.509 的实现(例如,在 Web 浏览器中,当它们验证 Web 服务器的证书时)就像处理nextUpdate日期一样处理endOfValidity。最近,Microsoft 定义了一个名为nextPublish的新扩展,它具有第一个含义(扩展见本草案的附件 A.1 ,在 OCSP 上下文中)。这个扩展(到目前为止,它似乎是微软私有的,而不是标准的)以某种方式承认,关于nextUpdate.
使用它的原因有很多:
- 它允许从 HTTP 等基于拉取的服务中更优化地获取 CRL,因此可以基于每个响应配置轮询时间。
- 它允许选择基于差异的与完整的 CRL 下载,因为在下一次更新时间或之后出现的 CRL 被假定为定期更新,而在下一次更新之前出现的更新被假定为安全补丁,因此整个 CRL 在本地缓存中被替换。
- 它允许在证书过期后修剪 CRL,而无需推送新的 CRL。这是通过在证书过期后的第一次定期更新(即下一次更新时间)自动删除 CRL 条目来完成的。
有关详细信息,请参阅RFC3280的第 5.1.2.5 节。