模块 java.base

类 CertPathBuilder

java.lang.Object
java.security.cert.CertPathBuilder

public class CertPathBuilder extends Object
用于构建证书路径(也称为证书链)的类。

此类使用基于提供者的体系结构。要创建 CertPathBuilder ,请调用静态 getInstance 方法之一,传入所需 CertPathBuilder 的算法名称以及可选的所需提供程序的名称。

创建 CertPathBuilder 对象后,可以通过调用 build 方法并向其传递一组特定于算法的参数来构建认证路径。如果成功,结果(包括构建的 CertPath)将在实现 CertPathBuilderResult 接口的对象中返回。

getRevocationChecker() 方法允许应用程序在检查证书的吊销状态时指定 CertPathBuilder 使用的其他算法特定参数和选项。下面是一个示例,演示如何将其与 PKIX 算法一起使用:

 CertPathBuilder cpb = CertPathBuilder.getInstance("PKIX");
 PKIXRevocationChecker rc = (PKIXRevocationChecker)cpb.getRevocationChecker();
 rc.setOptions(EnumSet.of(Option.PREFER_CRLS));
 params.addCertPathChecker(rc);
 CertPathBuilderResult cpbr = cpb.build(params);
 

Java 平台的每个实现都需要支持以下标准 CertPathBuilder 算法:

  • PKIX
该算法在 Java 安全标准算法名称规范的 CertPathBuilder 部分 中进行了描述。请查阅您的实施的发布文档以查看是否支持任何其他算法。

并发访问

此类的静态方法保证是线程安全的。多个线程可以同时调用此类中定义的静态方法而不会产生不良影响。

但是,对于此类定义的非静态方法,情况并非如此。除非特定提供者另有说明,否则需要同时访问单个 CertPathBuilder 实例的线程应该在它们之间同步并提供必要的锁定。每个操作不同CertPathBuilder实例的多个线程不需要同步。

自从:
1.4
参见:
  • 构造方法详细信息

    • CertPathBuilder

      protected CertPathBuilder(CertPathBuilderSpi  builderSpi, Provider  provider, String  algorithm)
      创建给定算法的 CertPathBuilder 对象,并将给定的提供程序实现(SPI 对象)封装在其中。
      参数:
      builderSpi - 供应商实施
      provider - 供应商
      algorithm - 算法名称
  • 方法详情

    • getInstance

      public static CertPathBuilder  getInstance(String  algorithm) throws NoSuchAlgorithmException
      返回实现指定算法的 CertPathBuilder 对象。

      此方法遍历已注册的安全提供者列表,从最喜欢的提供者开始。返回一个新的 CertPathBuilder 对象,该对象封装了第一个支持指定算法的 Provider 的 CertPathBuilderSpi 实现。

      请注意,可以通过 Security.getProviders() 方法检索已注册提供商的列表。

      实现注意事项:
      JDK 参考实现还使用 jdk.security.provider.preferred Security 属性来确定指定算法的首选提供程序顺序。这可能与 Security.getProviders() 返回的提供商顺序不同。
      参数:
      algorithm - 请求的 CertPathBuilder 算法的名称。有关标准算法名称的信息,请参阅 Java 安全标准算法名称规范 中的 CertPathBuilder 部分。
      返回:
      实现指定算法的 CertPathBuilder 对象
      抛出:
      NoSuchAlgorithmException - 如果没有 Provider 支持指定算法的 CertPathBuilderSpi 实现
      NullPointerException - 如果 algorithmnull
      参见:
    • getInstance

      public static CertPathBuilder  getInstance(String  algorithm, String  provider) throws NoSuchAlgorithmException , NoSuchProviderException
      返回实现指定算法的 CertPathBuilder 对象。

      返回一个新的 CertPathBuilder 对象,该对象封装了来自指定提供程序的 CertPathBuilderSpi 实现。指定的提供者必须在安全提供者列表中注册。

      请注意,可以通过 Security.getProviders() 方法检索已注册提供商的列表。

      参数:
      algorithm - 请求的 CertPathBuilder 算法的名称。有关标准算法名称的信息,请参阅 Java 安全标准算法名称规范 中的 CertPathBuilder 部分。
      provider - 提供商的名称。
      返回:
      实现指定算法的 CertPathBuilder 对象
      抛出:
      IllegalArgumentException - 如果 providernull 或为空
      NoSuchAlgorithmException - 如果指定算法的 CertPathBuilderSpi 实现不能从指定的提供商处获得
      NoSuchProviderException - 如果指定的提供者没有在安全提供者列表中注册
      NullPointerException - 如果 algorithmnull
      参见:
    • getInstance

      public static CertPathBuilder  getInstance(String  algorithm, Provider  provider) throws NoSuchAlgorithmException
      返回实现指定算法的 CertPathBuilder 对象。

      返回一个新的 CertPathBuilder 对象,该对象封装了来自指定 Provider 对象的 CertPathBuilderSpi 实现。请注意,指定的提供者对象不必在提供者列表中注册。

      参数:
      algorithm - 请求的 CertPathBuilder 算法的名称。有关标准算法名称的信息,请参阅 Java 安全标准算法名称规范 中的 CertPathBuilder 部分。
      provider - 提供商。
      返回:
      实现指定算法的 CertPathBuilder 对象
      抛出:
      IllegalArgumentException - 如果 providernull
      NoSuchAlgorithmException - 如果无法从指定的 Provider 对象获得指定算法的 CertPathBuilderSpi 实现
      NullPointerException - 如果 algorithmnull
      参见:
    • getProvider

      public final Provider  getProvider()
      返回此 CertPathBuilder 的提供者。
      返回:
      这个CertPathBuilder的提供者
    • getAlgorithm

      public final String  getAlgorithm()
      返回此 CertPathBuilder 的算法名称。
      返回:
      这个CertPathBuilder的算法名称
    • build

      尝试使用指定的算法参数集构建证书路径。
      参数:
      params - 算法参数
      返回:
      构建算法的结果
      抛出:
      CertPathBuilderException - 如果构建器无法构建满足指定参数的证书路径
      InvalidAlgorithmParameterException - 如果指定的参数不适合这个 CertPathBuilder
    • getDefaultType

      public static final String  getDefaultType()
      返回由 certpathbuilder.type 安全属性指定的默认 CertPathBuilder 类型,如果不存在此类属性,则返回字符串“PKIX”。

      默认 CertPathBuilder 类型可由不想在调用 getInstance 方法之一时使用硬编码类型的应用程序使用,并希望在用户未指定其自己的情况下提供默认类型。

      可以通过将 certpathbuilder.type 安全属性的值设置为所需类型来更改默认 CertPathBuilder 类型。

      返回:
      certpathbuilder.type 安全属性指定的默认 CertPathBuilder 类型,如果不存在此类属性,则为字符串“PKIX”。
      参见:
    • getRevocationChecker

      public final CertPathChecker  getRevocationChecker()
      返回一个 CertPathChecker,封装的 CertPathBuilderSpi 实现使用它来检查证书的吊销状态。 PKIX 实现返回类型为 PKIXRevocationChecker 的对象。每次调用此方法都会返回一个新的 CertPathChecker 实例。

      此方法的主要目的是允许调用者指定特定于吊销检查的其他输入参数和选项。有关示例,请参见类描述。

      返回:
      CertPathChecker
      抛出:
      UnsupportedOperationException - 如果服务提供商不支持此方法
      自从:
      1.8