Skip to content

JEP 124: Enhance the Certificate Revocation-Checking API | 增强证书吊销检查 API

摘要

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

目标

  1. 提供对尽力而为检查的 API 支持。在尽力而为检查中,如果无法连接到持有撤销信息的服务器,则证书不会被视为无效。

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

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

动机

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

当前的 API 还是“全有或全无”的,要求检查证书链中每个证书的撤销状态。它不允许仅检查终端实体证书的撤销状态。

当前的 API 缺乏对特定撤销机制(如 CRLs 或 OCSP)特定选项的支持。目前,这些选项要么缺失(如 OCSP nonce),要么只能作为安全属性来指定。

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

描述

以下是为实现上述目标而进行的 API 更改的概述。

CertPathValidatorCertPathBuilder 类中添加了新的 getRevocationChecker 方法,该方法返回一个 CertPathChecker,可用于指定额外的撤销选项和参数。类似地,在相应的 SpiCertPathValidatorSpiCertPathBuilderSpi 中也添加了 engineGetRevocationChecker 方法。

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

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

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