跳到主要内容

JEP 124:增强证书吊销检查 API

概括

改进证书吊销检查 API 以支持尽力检查、终端实体证书检查以及特定于机制的选项和参数。

目标

  1. 为尽力检查提供 API 支持。通过尽力检查,如果无法与保存吊销信息的服务器建立连接,则证书不会被视为无效。

  2. 提供 API 支持仅检查最终实体证书的吊销状态,而不是检查证书链中的每个证书。

  3. 为当前指定为系统属性的吊销检查选项提供 API 支持。添加特定于所使用的吊销检查机制类型(CRL 或 OCSP)的附加参数。

动机

当前的java.security.certAPI将无法联系持有吊销信息的服务器视为致命错误,这在许多环境中过于严格。尽力而为的选项将在安全性和可用性之间提供合理的平衡,并且还受到许多其他撤销检查实现的支持。

目前的API也是“全有或全无”,需要检查证书链中每个证书的吊销状态。它不允许您仅检查最终实体证书的吊销状态。

当前 API 不支持指定特定于特定撤销机制的选项,例如 CRL 或 OCSP。目前,这些选项要么缺失(例如 OCSP 随机数),要么只能指定为安全属性。

这些增强功能将使 API 更加完整、灵活,并且与其他实现相比更具竞争力。许多实现提供了额外的撤销检查选项,例如尽力检查。

描述

这是为支持上述目标而进行的 API 更改的摘要。

和类getRevocationChecker中添加了一个新方法,该方法返回可用于指定其他撤销选项和参数的 a。同样,相应的 Spi 类中也添加了一个方法,并且.CertPathValidator``CertPathBuilder``CertPathChecker``engineGetRevocationChecker``CertPathValidatorSpi``CertPathBuilderSpi

添加了一个新PKIXRevocationChecker类( 的子类PKIXCertPathChecker),可用于使用 PKIX 算法检查证书的吊销状态。

该类PKIXRevocationChecker包含允许在请求撤销时指定各种参数和选项的方法。

现有的 certpath 调试选项将得到增强,以记录重要问题以进行调试 ( -Djava.security.debug=certpath)。

测试

将创建单元测试来测试新的 API。可能需要实现 OCSP 和 CRL 服务器来模拟正确的测试环境。

理想情况下,每个供应商都应该实现一个测试套件,检查供应商特定文件中每个 CA 的证书是否已被吊销cacerts(因为cacertsOpenJDK 中的文件为空)。这将最大限度地降低由于实施或 CA 部署中的细微错误而导致失败的风险。一些CA会颁发测试证书来测试其服务;然而,这些证书往往是短暂的,因此必须定期更新。

影响

  • 文档:PKI 程序员指南需要使用新的 API 进行更新。

  • I18n/L10n:可能需要错误消息的本地化