Certificate
和CRL
的类。
此类使用基于提供程序的架构。要创建一个CertStore
,请调用其中一个静态的getInstance
方法,传入所需的CertStore
类型,任何适用的初始化参数,以及可选的所需提供程序的名称。
创建CertStore
后,可以通过调用其getCertificates
和getCRLs
方法来检索Certificate
和CRL
。
与提供对私钥和受信任证书缓存访问的KeyStore
不同,CertStore
旨在提供对潜在庞大的未受信任证书和CRL存储库的访问。例如,CertStore
的LDAP实现提供对使用LDAP协议和RFC服务属性中定义的模式存储在一个或多个目录中的证书和CRL的访问。
Java平台的每个实现都必须支持以下标准CertStore
类型:
Collection
并发访问
CertStore
对象的所有公共方法必须是线程安全的。也就是说,多个线程可以同时在单个CertStore
对象(或多个对象)上调用这些方法而不会产生任何不良影响。这允许CertPathBuilder
在搜索CRL的同时搜索进一步的证书,例如。
此类的静态方法也保证是线程安全的。多个线程可以同时调用此类中定义的静态方法而不会产生任何不良影响。
- 自版本:
- 1.4
-
Constructor Summary
ModifierConstructorDescriptionprotected
CertStore
(CertStoreSpi storeSpi, Provider provider, String type, CertStoreParameters params) 创建给定类型的CertStore
对象,并将给定的提供程序实现(SPI对象)封装在其中。 -
Method Summary
Modifier and TypeMethodDescriptionfinal Collection
<? extends Certificate> getCertificates
(CertSelector selector) 返回与指定选择器匹配的Certificate
的Collection
。final CertStoreParameters
返回用于初始化此CertStore
的参数。final Collection
<? extends CRL> getCRLs
(CRLSelector selector) 返回与指定选择器匹配的CRL
的Collection
。static final String
返回由certstore.type
安全属性指定的默认CertStore
类型,如果不存在此属性,则返回字符串"LDAP"。static CertStore
getInstance
(String type, CertStoreParameters params) 返回实现指定CertStore
类型并使用指定参数初始化的CertStore
对象。static CertStore
getInstance
(String type, CertStoreParameters params, String provider) 返回实现指定CertStore
类型的CertStore
对象。static CertStore
getInstance
(String type, CertStoreParameters params, Provider provider) 返回实现指定CertStore
类型的CertStore
对象。final Provider
返回此CertStore
的提供程序。final String
getType()
返回此CertStore
的类型。
-
Constructor Details
-
CertStore
protected CertStore(CertStoreSpi storeSpi, Provider provider, String type, CertStoreParameters params) 创建给定类型的CertStore
对象,并将给定的提供程序实现(SPI对象)封装在其中。- 参数:
-
storeSpi
- 提供程序实现 -
provider
- 提供程序 -
type
- 类型 -
params
- 初始化参数(可以为null
)
-
-
Method Details
-
getCertificates
public final Collection<? extends Certificate> getCertificates(CertSelector selector) throws CertStoreException 返回与指定选择器匹配的Certificate
的Collection
。如果没有匹配选择器的Certificate
,则将返回一个空的Collection
。对于某些
CertStore
类型,生成的Collection
可能不包含所有与选择器匹配的Certificate
。例如,LDAPCertStore
可能不会搜索目录中的所有条目。相反,它可能只搜索可能包含它正在寻找的Certificate
的条目。一些
CertStore
实现(特别是LDAPCertStore
)可能会抛出CertStoreException
,除非提供一个包含可用于查找证书的特定条件的非空CertSelector
。发行者和/或主题名称特别有用。- 参数:
-
selector
- 用于选择应返回哪些Certificate
的CertSelector
。如果支持,指定null
以返回所有Certificate
。 - 返回:
-
与指定选择器匹配的
Certificate
的Collection
(永不为null
) - 抛出:
-
CertStoreException
- 如果发生异常
-
getCRLs
返回与指定选择器匹配的CRL
的Collection
。如果没有匹配选择器的CRL
,则将返回一个空的Collection
。对于某些
CertStore
类型,生成的Collection
可能不包含所有与选择器匹配的CRL
。例如,LDAPCertStore
可能不会搜索目录中的所有条目。相反,它可能只搜索可能包含它正在寻找的CRL
的条目。一些
CertStore
实现(特别是LDAPCertStore
)可能会抛出CertStoreException
,除非提供一个包含可用于查找CRL的特定条件的非空CRLSelector
。发行者名称和/或要检查的证书特别有用。- 参数:
-
selector
- 用于选择应返回哪些CRL
的CRLSelector
。如果支持,指定null
以返回所有CRL
。 - 返回:
-
与指定选择器匹配的
CRL
的Collection
(永不为null
) - 抛出:
-
CertStoreException
- 如果发生异常
-
getInstance
public static CertStore getInstance(String type, CertStoreParameters params) throws InvalidAlgorithmParameterException, NoSuchAlgorithmException 返回实现指定CertStore
类型并使用指定参数初始化的CertStore
对象。此方法遍历已注册的安全提供程序列表,从最首选的提供程序开始。返回封装了支持指定类型的第一个提供程序的CertStoreSpi实现的新CertStore对象。
请注意,已注册提供程序的列表可以通过
Security.getProviders()
方法检索。返回的
CertStore
使用指定的CertStoreParameters
进行初始化。所需的参数类型可能因不同类型的CertStore
而异。请注意,指定的CertStoreParameters
对象会被克隆。- 实现注意:
-
JDK参考实现另外使用
jdk.security.provider.preferred
Security
属性来确定指定算法的首选提供程序顺序。这可能与Security.getProviders()
返回的提供程序顺序不同。 - 参数:
-
type
- 请求的CertStore
类型的名称。有关标准类型的信息,请参阅Java安全标准算法名称规范中的CertStore部分。 -
params
- 初始化参数(可以为null
)。 - 返回:
-
实现指定
CertStore
类型的CertStore
对象 - 抛出:
-
InvalidAlgorithmParameterException
- 如果指定的初始化参数不适用于此CertStore
-
NoSuchAlgorithmException
- 如果没有Provider
支持指定类型的CertStoreSpi
实现 -
NullPointerException
- 如果type
为null
- 参见:
-
getInstance
public static CertStore getInstance(String type, CertStoreParameters params, String provider) throws InvalidAlgorithmParameterException, NoSuchAlgorithmException, NoSuchProviderException 返回实现指定CertStore
类型的CertStore
对象。返回封装了指定提供程序的CertStoreSpi实现的新CertStore对象。指定的提供程序必须在安全提供程序列表中注册。
请注意,已注册提供程序的列表可以通过
Security.getProviders()
方法检索。返回的
CertStore
使用指定的CertStoreParameters
进行初始化。所需的参数类型可能因不同类型的CertStore
而异。请注意,指定的CertStoreParameters
对象会被克隆。- 参数:
-
type
- 请求的CertStore
类型。有关标准类型的信息,请参阅Java安全标准算法名称规范中的CertStore部分。 -
params
- 初始化参数(可以为null
)。 -
provider
- 提供者的名称。 - 返回:
-
实现指定类型的
CertStore
对象 - 抛出:
-
IllegalArgumentException
- 如果provider
为null
或空 -
InvalidAlgorithmParameterException
- 如果指定的初始化参数不适用于此CertStore
-
NoSuchAlgorithmException
- 如果指定类型的CertStoreSpi
实现不可从指定的提供者获取 -
NoSuchProviderException
- 如果指定的提供者未在安全提供者列表中注册 -
NullPointerException
- 如果type
为null
- 参见:
-
getInstance
public static CertStore getInstance(String type, CertStoreParameters params, Provider provider) throws NoSuchAlgorithmException, InvalidAlgorithmParameterException 返回一个实现指定CertStore
类型的CertStore
对象。返回一个封装了指定提供者对象中的CertStoreSpi实现的新CertStore对象。请注意,指定的提供者对象不必在提供者列表中注册。
返回的
CertStore
将使用指定的CertStoreParameters
进行初始化。所需的参数类型可能因不同类型的CertStore
而异。请注意,指定的CertStoreParameters
对象将被克隆。- 参数:
-
type
- 请求的CertStore
类型。有关标准类型的信息,请参阅Java安全标准算法名称规范中的CertStore部分。 -
params
- 初始化参数(可以为null
)。 -
provider
- 提供者。 - 返回:
-
实现指定类型的
CertStore
对象 - 抛出:
-
IllegalArgumentException
- 如果provider
为null -
InvalidAlgorithmParameterException
- 如果指定的初始化参数不适用于此CertStore
-
NoSuchAlgorithmException
- 如果指定类型的CertStoreSpi
实现不可从指定提供者获取 -
NullPointerException
- 如果type
为null
- 参见:
-
getCertStoreParameters
返回用于初始化此CertStore
的参数。请注意,在返回之前,CertStoreParameters
对象将被克隆。- 返回:
-
用于初始化此
CertStore
的参数(可以为null
)
-
getType
返回此CertStore
的类型。- 返回:
-
此
CertStore
的类型
-
getProvider
返回此CertStore
的提供者。- 返回:
-
此
CertStore
的提供者
-
getDefaultType
返回由certstore.type
安全属性指定的默认CertStore
类型,如果不存在此类属性,则返回字符串"LDAP"。默认的
CertStore
类型可供不希望在调用getInstance
方法时使用硬编码类型,并希望在用户未指定自己的类型时提供默认CertStore
类型的应用程序使用。可以通过将
certstore.type
安全属性的值设置为所需的类型来更改默认的CertStore
类型。- 返回:
-
由
certstore.type
安全属性指定的默认CertStore
类型,如果不存在此类属性,则返回字符串"LDAP"。 - 参见:
-