Module java.base

Class 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
参见:
  • Constructor Details

    • CertPathBuilder

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

    • getInstance

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

      此方法遍历注册的安全提供程序列表,从最优先的提供程序开始。返回封装来自支持指定算法的第一个提供程序的CertPathBuilderSpi实现的新CertPathBuilder对象。

      请注意,注册的提供程序列表可以通过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对象。

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

      请注意,注册的提供程序列表可以通过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对象。

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

      参数:
      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