JEP 124: Enhance the Certificate Revocation-Checking API | 增强证书吊销检查 API
摘要
改进证书撤销检查 API,以支持尽力而为的检查、终端实体证书检查和特定于机制的选项和参数。
目标
提供对尽力而为检查的 API 支持。在尽力而为检查中,如果无法连接到持有撤销信息的服务器,则证书不会被视为无效。
提供 API 支持,仅检查终端实体证书的撤销状态,而不是证书链中的每个证书。
提供对目前指定为系统属性的撤销检查选项的 API 支持。为所使用的撤销检查机制类型(CRLs 或 OCSP)添加特定的附加参数。
动机
当前的 java.security.cert
API 将无法连接到持有撤销信息的服务器视为致命错误,这在许多环境中过于严格。尽力而为的选项将在安全性和可用性之间提供合理的平衡,并且也得到了许多其他撤销检查实现的支持。
当前的 API 还是“全有或全无”的,要求检查证书链中每个证书的撤销状态。它不允许仅检查终端实体证书的撤销状态。
当前的 API 缺乏对特定撤销机制(如 CRLs 或 OCSP)特定选项的支持。目前,这些选项要么缺失(如 OCSP nonce),要么只能作为安全属性来指定。
这些增强将使 API 更加完整、灵活,并与其他实现更具竞争力。许多实现提供了额外的撤销检查选项,如尽力而为的检查。
描述
以下是为实现上述目标而进行的 API 更改的概述。
在 CertPathValidator
和 CertPathBuilder
类中添加了新的 getRevocationChecker
方法,该方法返回一个 CertPathChecker
,可用于指定额外的撤销选项和参数。类似地,在相应的 Spi
类 CertPathValidatorSpi
和 CertPathBuilderSpi
中也添加了 engineGetRevocationChecker
方法。
添加了一个新的 PKIXRevocationChecker
类(PKIXCertPathChecker
的子类),可用于使用 PKIX 算法检查证书的撤销状态。
PKIXRevocationChecker
类包含方法,允许在请求撤销时指定各种参数和选项。
现有的 certpath 调试选项将得到增强,以便为调试目的记录重要问题(-Djava.security.debug=certpath
)。