- 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
并发访问
该类的静态方法保证线程安全。 多个线程可以同时调用此类中定义的静态方法,而不会产生不良影响。
但是,对于此类定义的非静态方法,这不是真的。 除非特定提供者另有说明,否则需要同时访问单个
CertPathBuilder
实例的线程应在CertPathBuilder
同步并提供必要的锁定。 多个线程每个操作不同的CertPathBuilder
实例不需要同步。- 从以下版本开始:
- 1.4
- 另请参见:
-
CertPath
-
-
-
构造方法摘要
构造方法 Modifier Constructor 描述 protected
CertPathBuilder(CertPathBuilderSpi builderSpi, Provider provider, String algorithm)
创建给定算法的CertPathBuilder
对象,并将给定的提供者实现(SPI对象)封装在其中。
-
方法摘要
所有方法 静态方法 接口方法 具体的方法 Modifier and Type 方法 描述 CertPathBuilderResult
build(CertPathParameters params)
尝试使用指定的算法参数集构建认证路径。String
getAlgorithm()
返回此CertPathBuilder
算法的CertPathBuilder
。static String
getDefaultType()
返回由certpathbuilder.type
安全属性指定的默认CertPathBuilder
类型,如果不存在此属性,则返回字符串“PKIX”。static CertPathBuilder
getInstance(String algorithm)
返回实现指定算法的CertPathBuilder
对象。static CertPathBuilder
getInstance(String algorithm, String provider)
返回实现指定算法的CertPathBuilder
对象。static CertPathBuilder
getInstance(String algorithm, Provider provider)
返回实现指定算法的CertPathBuilder
对象。Provider
getProvider()
返回此CertPathBuilder
的提供者。CertPathChecker
getRevocationChecker()
返回CertPathChecker
封装的CertPathBuilderSpi
实现用于检查证书的撤销状态。
-
-
-
构造方法详细信息
-
CertPathBuilder
protected CertPathBuilder(CertPathBuilderSpi builderSpi, Provider provider, String algorithm)
创建给定算法的CertPathBuilder
对象,并将给定的提供者实现(SPI对象)封装在其中。- 参数
-
builderSpi
- 提供者实现 -
provider
- 提供商 -
algorithm
- 算法名称
-
-
方法详细信息
-
getInstance
public static CertPathBuilder getInstance(String algorithm) throws NoSuchAlgorithmException
返回实现指定算法的CertPathBuilder
对象。此方法遍历已注册的安全提供程序列表,从最优选的提供程序开始。 返回从支持指定算法的第一个Provider中封装CertPathBuilderSpi实现的新CertPathBuilder对象。
请注意,可以通过
Security.getProviders()
方法检索已注册提供商的列表。- Implementation Note:
-
JDK参考实现另外使用
jdk.security.provider.preferred
Security
属性来确定指定算法的首选提供者顺序。 这可能与Security.getProviders()
返回的提供商的顺序不同。 - 参数
-
algorithm
- 所请求的CertPathBuilder
算法的名称。 有关标准算法名称的信息,请参阅Java Security Standard Algorithm Names Specification中的CertPathBuilder部分。 - 结果
-
一个实现指定算法的
CertPathBuilder
对象 - 异常
-
NoSuchAlgorithmException
- 如果没有Provider
支持指定算法的CertPathBuilderSpi
实现 -
NullPointerException
- 如果algorithm
是null
- 另请参见:
-
Provider
-
getInstance
public static CertPathBuilder getInstance(String algorithm, String provider) throws NoSuchAlgorithmException, NoSuchProviderException
返回实现指定算法的CertPathBuilder
对象。返回从指定提供程序封装CertPathBuilderSpi实现的新CertPathBuilder对象。 指定的提供者必须在安全提供程序列表中注册。
注意,可以通过
Security.getProviders()
方法检索注册提供商的列表。- 参数
-
algorithm
- 请求的名称CertPathBuilder
算法。 有关标准算法名称的信息,请参阅Java Security Standard Algorithm Names Specification中的CertPathBuilder部分。 -
provider
- 提供商的名称。 - 结果
-
一个实现指定算法的
CertPathBuilder
对象 - 异常
-
IllegalArgumentException
- 如果provider
是null
或空 -
NoSuchAlgorithmException
- 如果指定算法的CertPathBuilderSpi
实现不能从指定的提供者获得 -
NoSuchProviderException
- 如果指定的提供程序未在安全提供程序列表中注册 -
NullPointerException
- 如果algorithm
是null
- 另请参见:
-
Provider
-
getInstance
public static CertPathBuilder getInstance(String algorithm, Provider provider) throws NoSuchAlgorithmException
返回实现指定算法的CertPathBuilder
对象。返回从指定的Provider对象封装CertPathBuilderSpi实现的新的CertPathBuilder对象。 请注意,指定的Provider对象不必在提供者列表中注册。
- 参数
-
algorithm
- 请求的名称CertPathBuilder
算法。 有关标准算法名称的信息,请参阅Java Security Standard Algorithm Names Specification中的CertPathBuilder部分。 -
provider
- 提供商。 - 结果
-
一个实现指定算法的
CertPathBuilder
对象 - 异常
-
IllegalArgumentException
- 如果provider
是null
-
NoSuchAlgorithmException
- 如果指定的算法的CertPathBuilderSpi
实现从指定的Provider
对象不可用 -
NullPointerException
- 如果algorithm
是null
- 另请参见:
-
Provider
-
getProvider
public final Provider getProvider()
返回此CertPathBuilder
的提供者。- 结果
-
这个
CertPathBuilder
的提供者
-
getAlgorithm
public final String getAlgorithm()
返回此CertPathBuilder
算法的CertPathBuilder
。- 结果
-
这个
CertPathBuilder
的算法的CertPathBuilder
-
build
public final CertPathBuilderResult build(CertPathParameters params) throws CertPathBuilderException, InvalidAlgorithmParameterException
尝试使用指定的算法参数集构建认证路径。- 参数
-
params
- 算法参数 - 结果
- 构建算法的结果
- 异常
-
CertPathBuilderException
- 如果构建器不能构造满足指定参数的认证路径 -
InvalidAlgorithmParameterException
- 如果指定的参数不适合此CertPathBuilder
-
getDefaultType
public static final String getDefaultType()
返回由certpathbuilder.type
安全属性指定的默认CertPathBuilder
类型,如果不存在此属性,则返回字符串“PKIX”。默认的
CertPathBuilder
类型可以由不想使用硬编码类型的应用程序使用,当调用getInstance
方法之一时,并希望提供默认类型,以防用户没有指定自己的类型。通过将
certpathbuilder.type
安全属性的值设置为CertPathBuilder
类型,可以更改默认值certpathbuilder.type
类型。- 结果
-
默认的
CertPathBuilder
类型由certpathbuilder.type
指定的安全属性,或字符串“PKIX”,如果没有这样的属性存在。 - 另请参见:
-
security properties
-
getRevocationChecker
public final CertPathChecker getRevocationChecker()
返回CertPathChecker
封装的CertPathBuilderSpi
实现用于检查证书的撤销状态。 PKIX实现返回PKIXRevocationChecker
类型的PKIXRevocationChecker
。 此方法的每次调用返回一个新的实例CertPathChecker
。此方法的主要目的是允许调用者指定额外的输入参数和特定于撤销检查的选项。 参见课程说明一个例子。
- 结果
-
一个
CertPathChecker
- 异常
-
UnsupportedOperationException
- 如果服务提供商不支持此方法 - 从以下版本开始:
- 1.8
-
-