- 所有已实现的接口:
-
Cloneable
,CertSelector
X509Certificates
的CertSelector
。当从CertStore
中选择证书以构建符合PKIX标准的认证路径时,此类特别有用。
首次构造时,X509CertSelector
没有启用任何条件,每个get
方法都返回默认值(null
,或-1
用于getBasicConstraints
方法)。因此,match
方法将对任何X509Certificate
返回true
。通常,通过启用多个条件(例如调用setIssuer(X500Principal)
或setKeyUsage
)然后将X509CertSelector
传递给CertStore.getCertificates
或类似方法。
可以启用多个条件(例如调用setIssuer(X500Principal)
和setSerialNumber
),使match
方法通常唯一匹配单个X509Certificate
。我们说通常,因为两个颁发CA可能具有相同的可分辨名称,并且每个颁发具有相同的序列号颁发证书。其他唯一组合包括颁发者、主题、主题密钥标识符和/或主题公钥标准。
请参考RFC 5280: 互联网X.509公钥基础设施证书和CRL配置文件以获取下面提到的X.509证书扩展的定义。
并发访问
除非另有说明,此类中定义的方法不是线程安全的。需要同时访问单个对象的多个线程应在它们之间同步并提供必要的锁定。每个操作不同对象的多个线程不需要同步。
- 自:
- 1.4
- 参见:
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionvoid
addPathToName
(int type, byte[] name) 向pathToNames条件添加一个名称。void
addPathToName
(int type, String name) 向pathToNames条件添加一个名称。void
addSubjectAlternativeName
(int type, byte[] name) 向subjectAlternativeNames条件添加一个名称。void
addSubjectAlternativeName
(int type, String name) 向subjectAlternativeNames条件添加一个名称。clone()
返回此对象的副本。byte[]
返回authorityKeyIdentifier条件。int
返回基本约束条件。返回certificateEquals条件。返回certificateValid条件。返回extendedKeyUsage条件。返回颁发者条件作为X500Principal
。byte[]
返回颁发者条件作为字节数组。已弃用。boolean[]
返回keyUsage条件。boolean
byte[]
返回名称约束条件。Collection
<List<?>> 返回pathToNames条件的副本。返回策略条件。返回privateKeyValid条件。返回serialNumber条件。返回主题条件作为X500Principal
。Collection
<List<?>> 返回subjectAlternativeNames条件的副本。byte[]
返回主题条件作为字节数组。已弃用。byte[]
返回subjectKeyIdentifier条件。返回subjectPublicKey条件。返回subjectPublicKeyAlgID条件。boolean
match
(Certificate cert) 决定是否选择Certificate
。void
setAuthorityKeyIdentifier
(byte[] authorityKeyID) 设置authorityKeyIdentifier条件。void
setBasicConstraints
(int minMaxPathLen) 设置基本约束条件。void
设置certificateEquals条件。void
setCertificateValid
(Date certValid) 设置certificateValid条件。void
setExtendedKeyUsage
(Set<String> keyPurposeSet) 设置extendedKeyUsage条件。void
setIssuer
(byte[] issuerDN) 设置颁发者条件。void
已弃用。void
setIssuer
(X500Principal issuer) 设置颁发者条件。void
setKeyUsage
(boolean[] keyUsage) 设置keyUsage条件。void
setMatchAllSubjectAltNames
(boolean matchAllNames) 启用/禁用匹配在setSubjectAlternativeNames
或addSubjectAlternativeName
方法中指定的所有主题替代名称。void
setNameConstraints
(byte[] bytes) 设置名称约束条件。void
setPathToNames
(Collection<List<?>> names) 设置pathToNames条件。void
设置策略约束。void
setPrivateKeyValid
(Date privateKeyValid) 设置privateKeyValid条件。void
setSerialNumber
(BigInteger serial) 设置serialNumber条件。void
setSubject
(byte[] subjectDN) 设置主题条件。void
setSubject
(String subjectDN) 已弃用。void
setSubject
(X500Principal subject) 设置主题条件。void
setSubjectAlternativeNames
(Collection<List<?>> names) 设置subjectAlternativeNames条件。void
setSubjectKeyIdentifier
(byte[] subjectKeyID) 设置subjectKeyIdentifier条件。void
setSubjectPublicKey
(byte[] key) 设置subjectPublicKey条件。void
设置subjectPublicKey条件。void
设置subjectPublicKeyAlgID条件。toString()
返回CertSelector
的可打印表示。
-
Constructor Details
-
X509CertSelector
public X509CertSelector()创建一个X509CertSelector
。最初,没有设置任何条件,因此任何X509Certificate
都将匹配。
-
-
Method Details
-
setCertificate
设置certificateEquals条件。指定的X509Certificate
必须等于传递给match
方法的X509Certificate
。如果为null
,则不应用此检查。当需要匹配单个证书时,此方法特别有用。虽然可以与certificateEquals条件一起指定其他条件,但通常不实用或必要。
- 参数:
-
cert
- 要匹配的X509Certificate
(或null
) - 参见:
-
setSerialNumber
设置serialNumber条件。指定的序列号必须与X509Certificate
中的证书序列号匹配。如果为null
,则任何证书序列号都可以。- 参数:
-
serial
- 要匹配的证书序列号(或null
) - 参见:
-
setIssuer
设置颁发者条件。指定的可分辨名称必须与X509Certificate
中的颁发者可分辨名称匹配。如果为null
,则任何颁发者可分辨名称都可以。- 参数:
-
issuer
- 作为X500Principal的可分辨名称(或null
) - 自:
- 1.5
-
setIssuer
Deprecated.UsesetIssuer(X500Principal)
orsetIssuer(byte[])
instead. This method should not be relied on as it can fail to match some certificates because of a loss of encoding information in the RFC 2253 String form of some distinguished names.设置颁发者条件。指定的可分辨名称必须与X509Certificate
中的颁发者可分辨名称匹配。如果为null
,则任何颁发者可分辨名称都可以。如果
issuerDN
不为null
,则应包含一个以RFC 2253格式的可分辨名称。- 参数:
-
issuerDN
- 以RFC 2253格式的可分辨名称(或null
) - 抛出:
-
IOException
- 如果发生解析错误(DN格式不正确)
-
setIssuer
设置发行者准则。指定的专有名称必须与X509Certificate
中的发行者专有名称匹配。如果指定了null
,则发行者准则被禁用,任何发行者专有名称都可以。如果
issuerDN
不是null
,则应包含一个单个DER编码的专有名称,如X.501中定义的那样。此结构的ASN.1表示如下。名称 ::= CHOICE { RDNSequence } RDNSequence ::= SEQUENCE OF RelativeDistinguishedName RelativeDistinguishedName ::= SET SIZE (1 .. MAX) OF AttributeTypeAndValue AttributeTypeAndValue ::= SEQUENCE { type AttributeType, value AttributeValue } AttributeType ::= OBJECT IDENTIFIER AttributeValue ::= ANY DEFINED BY AttributeType .... DirectoryString ::= CHOICE { teletexString TeletexString (SIZE (1..MAX)), printableString PrintableString (SIZE (1..MAX)), universalString UniversalString (SIZE (1..MAX)), utf8String UTF8String (SIZE (1.. MAX)), bmpString BMPString (SIZE (1..MAX)) }
请注意,此处指定的字节数组已克隆,以防止后续修改。
- 参数:
-
issuerDN
- 包含ASN.1 DER编码形式的专有名称的字节数组(或null
) - 抛出:
-
IOException
- 如果发生编码错误(DN格式不正确)
-
setSubject
设置主题准则。指定的专有名称必须与X509Certificate
中的主题专有名称匹配。如果null
,任何主题专有名称都可以。- 参数:
-
subject
- 作为X500Principal的专有名称(或null
) - 自JDK版本:
- 1.5
-
setSubject
Deprecated.UsesetSubject(X500Principal)
orsetSubject(byte[])
instead. This method should not be relied on as it can fail to match some certificates because of a loss of encoding information in the RFC 2253 String form of some distinguished names.设置主题准则。指定的专有名称必须与X509Certificate
中的主题专有名称匹配。如果null
,任何主题专有名称都可以。如果
subjectDN
不是null
,则应包含一个以RFC 2253格式定义的专有名称。- 参数:
-
subjectDN
- 以RFC 2253格式表示的专有名称(或null
) - 抛出:
-
IOException
- 如果发生解析错误(DN格式不正确)
-
setSubject
设置主题准则。指定的专有名称必须与X509Certificate
中的主题专有名称匹配。如果null
,任何主题专有名称都可以。如果
subjectDN
不是null
,则应包含一个单个DER编码的专有名称,如X.501中定义的那样。有关此结构的ASN.1表示,请参见setIssuer(byte[])
。- 参数:
-
subjectDN
- 包含ASN.1 DER格式的专有名称的字节数组(或null
) - 抛出:
-
IOException
- 如果发生编码错误(DN格式不正确)
-
setSubjectKeyIdentifier
public void setSubjectKeyIdentifier(byte[] subjectKeyID) 设置主体密钥标识准则。必须包含X509Certificate
的SubjectKeyIdentifier扩展,其内容与指定的准则值匹配。如果准则值为null
,将不进行主体密钥标识检查。如果
subjectKeyID
不是null
,则应包含一个单个DER编码的值,对应于SubjectKeyIdentifier扩展的内容(不包括对象标识符、关键性设置和封装的OCTET STRING)。此结构的ASN.1表示如下。SubjectKeyIdentifier ::= KeyIdentifier KeyIdentifier ::= OCTET STRING
由于主体密钥标识的格式未受任何标准规定,因此
X509CertSelector
不会解析主体密钥标识。相反,将使用逐字节比较值。请注意,此处提供的字节数组已克隆,以防止后续修改。
- 参数:
-
subjectKeyID
- 主体密钥标识(或null
) - 参见:
-
setAuthorityKeyIdentifier
public void setAuthorityKeyIdentifier(byte[] authorityKeyID) 设置授权密钥标识准则。必须包含X509Certificate
的AuthorityKeyIdentifier扩展,其内容与指定的准则值匹配。如果准则值为null
,将不进行授权密钥标识检查。如果
authorityKeyID
不是null
,则应包含一个单个DER编码的值,对应于AuthorityKeyIdentifier扩展的内容(不包括对象标识符、关键性设置和封装的OCTET STRING)。此结构的ASN.1表示如下。AuthorityKeyIdentifier ::= SEQUENCE { keyIdentifier [0] KeyIdentifier OPTIONAL, authorityCertIssuer [1] GeneralNames OPTIONAL, authorityCertSerialNumber [2] CertificateSerialNumber OPTIONAL } KeyIdentifier ::= OCTET STRING
X509CertSelector
不会解析授权密钥标识。相反,将使用逐字节比较值。当
AuthorityKeyIdentifier
的keyIdentifier
字段填充时,该值通常取自发行者证书中的SubjectKeyIdentifier
扩展。但请注意,不能直接使用发行者证书的SubjectKeyIdentifier
上的X509Certificate.getExtensionValue(<SubjectKeyIdentifier Object Identifier>)
的结果作为setAuthorityKeyIdentifier
的输入。这是因为SubjectKeyIdentifier仅包含一个KeyIdentifier OCTET STRING,而不是KeyIdentifier、GeneralNames和CertificateSerialNumber的SEQUENCE。为了使用发行者证书的SubjectKeyIdentifier
扩展值,需要提取嵌入的KeyIdentifier
OCTET STRING的值,然后将此OCTET STRING DER编码在SEQUENCE内。有关SubjectKeyIdentifier的更多详细信息,请参见setSubjectKeyIdentifier(byte[] subjectKeyID)
。还请注意,此处提供的字节数组已克隆,以防止后续修改。
- 参数:
-
authorityKeyID
- 授权密钥标识(或null
) - 参见:
-
setCertificateValid
设置证书有效准则。指定的日期必须在X509Certificate
的证书有效期内。如果null
,将不进行证书有效性检查。请注意,此处提供的
Date
已克隆,以防止后续修改。- 参数:
-
certValid
- 要检查的Date
(或null
) - 参见:
-
setPrivateKeyValid
设置私钥有效准则。指定的日期必须在X509Certificate
的私钥有效期内。如果null
,将不进行私钥有效性检查。请注意,此处提供的
Date
已克隆,以防止后续修改。- 参数:
-
privateKeyValid
- 要检查的Date
(或null
) - 参见:
-
setSubjectPublicKeyAlgID
设置主体公钥算法标识准则。必须包含X509Certificate
具有指定算法的主体公钥。如果null
,将不进行主体公钥算法标识检查。- 参数:
-
oid
- 要检查的算法的对象标识符(OID)(或null
)。OID由一组用句点分隔的非负整数表示。 - 抛出:
-
IOException
- 如果OID无效,例如第一个组件不是0、1或2,或第二个组件大于39。 - 参见:
-
setSubjectPublicKey
设置主体公钥准则。必须包含X509Certificate
具有指定主体公钥。如果null
,将不进行主体公钥检查。- 参数:
-
key
- 要检查的主体公钥(或null
) - 参见:
-
setSubjectPublicKey
设置主体公钥准则。必须包含X509Certificate
具有指定主体公钥。如果null
,将不进行主体公钥检查。由于此方法允许将公钥指定为字节数组,因此可用于未知的密钥类型。
如果
key
不是null
,则应包含一个单个DER编码的SubjectPublicKeyInfo结构,如X.509中定义的那样。此结构的ASN.1表示如下。SubjectPublicKeyInfo ::= SEQUENCE { algorithm AlgorithmIdentifier, subjectPublicKey BIT STRING } AlgorithmIdentifier ::= SEQUENCE { algorithm OBJECT IDENTIFIER, parameters ANY DEFINED BY algorithm OPTIONAL } -- contains a value of the type -- registered for use with the -- algorithm object identifier value
请注意,此处提供的字节数组已克隆,以防止后续修改。
- 参数:
-
key
- 包含主题公钥的字节数组,以ASN.1 DER形式表示(或null
) - 抛出:
-
IOException
- 如果发生编码错误(主题公钥形式不正确) - 参见:
-
setKeyUsage
public void setKeyUsage(boolean[] keyUsage) 设置keyUsage标准。X509Certificate
必须允许指定的keyUsage值。 如果为null
,将不进行keyUsage检查。请注意,没有keyUsage扩展的X509Certificate
隐含允许所有keyUsage值。请注意,此处提供的布尔数组会被克隆,以防止后续修改。
- 参数:
-
keyUsage
- 与由X509Certificate.getKeyUsage()
返回的布尔数组格式相同。或null
。 - 参见:
-
setExtendedKeyUsage
设置extendedKeyUsage标准。X509Certificate
必须允许其扩展密钥用途扩展中指定的密钥用途。 如果keyPurposeSet
为空或null
,将不进行extendedKeyUsage检查。请注意,没有extendedKeyUsage扩展的X509Certificate
隐含允许所有密钥用途。请注意,
Set
会被克隆,以防止后续修改。- 参数:
-
keyPurposeSet
- 以字符串格式表示的密钥用途OID的Set
(或null
)。每个OID由一组以句点分隔的非负整数表示。 - 抛出:
-
IOException
- 如果OID无效,例如第一个组件不是0、1或2,或第二个组件大于39。 - 参见:
-
setMatchAllSubjectAltNames
public void setMatchAllSubjectAltNames(boolean matchAllNames) 启用/禁用匹配在setSubjectAlternativeNames
或addSubjectAlternativeName
方法中指定的所有subjectAlternativeNames。如果启用,则X509Certificate
必须包含所有指定的subject alternative names。如果禁用,则X509Certificate
必须包含指定的至少一个subject alternative name。matchAllNames标志默认为
true
。- 参数:
-
matchAllNames
- 如果为true
,则启用该标志;如果为false
,则禁用该标志。 - 参见:
-
setSubjectAlternativeNames
设置subjectAlternativeNames标准。X509Certificate
必须包含所有或至少一个指定的subjectAlternativeNames,取决于matchAllNames标志的值(请参见setMatchAllSubjectAltNames
)。此方法允许调用者通过单个方法调用指定subjectAlternativeNames标准的完整集合。指定的值将替换subjectAlternativeNames标准的先前值。
names
参数(如果不为null
)是一个Collection
,每个要包含在subject alternative name标准中的名称都有一个条目。每个条目都是一个List
,其第一个条目是一个Integer
(名称类型,0-8),第二个条目是一个String
或字节数组(名称,分别以字符串或ASN.1 DER编码形式)。可以有多个相同类型的名称。如果为此参数提供null
值,则不会执行subjectAlternativeNames检查。在
Collection
中的每个subject alternative name可以指定为String
或ASN.1编码的字节数组。有关使用的格式的更多详细信息,请参见addSubjectAlternativeName(int type, String name)
和addSubjectAlternativeName(int type, byte [] name)
。注意: 对于可分辨名称,请指定字节数组形式,而不是字符串形式。有关更多信息,请参见
addSubjectAlternativeName(int, String)
中的注释。请注意,
names
参数可能包含重复的名称(相同的名称和名称类型),但它们可能会从getSubjectAlternativeNames
方法返回的名称Collection
中删除。请注意,对
Collection
执行深度复制,以防止后续修改。- 参数:
-
names
- 一组名称的Collection
(或null
) - 抛出:
-
IOException
- 如果发生解析错误 - 参见:
-
addSubjectAlternativeName
向subjectAlternativeNames标准添加一个名称。X509Certificate
必须包含所有或至少一个指定的subjectAlternativeNames,取决于matchAllNames标志的值(请参见setMatchAllSubjectAltNames
)。此方法允许调用者向subject alternative names集合添加一个名称。指定的名称将添加到subjectAlternativeNames标准的任何先前值中。如果指定的名称是重复的,则可能会被忽略。
名称以字符串格式提供。RFC 822、DNS和URI名称使用这些类型的已知字符串格式(受RFC 5280中包含的限制的限制)。IPv4地址名称使用点分十进制表示法提供。OID地址名称表示为一系列以句点分隔的非负整数。目录名称(可分辨名称)以RFC 2253格式提供。其他名称、X.400名称、EDI方名称、IPv6地址名称或任何其他类型的名称没有定义标准字符串格式。它们应该使用
addSubjectAlternativeName(int type, byte [] name)
方法指定。注意: 对于可分辨名称,请使用addSubjectAlternativeName(int, byte[])。不应依赖此方法,因为由于RFC 2253字符串形式中某些可分辨名称的编码信息丢失,可能无法匹配某些证书。
- 参数:
-
type
- 名称类型(如RFC 5280第4.2.1.6节中指定的0-8) -
name
- 字符串形式的名称(非null
) - 抛出:
-
IOException
- 如果发生解析错误
-
addSubjectAlternativeName
向subjectAlternativeNames标准添加一个名称。X509Certificate
必须包含所有或至少一个指定的subjectAlternativeNames,取决于matchAllNames标志的值(请参见setMatchAllSubjectAltNames
)。此方法允许调用者向subject alternative names集合添加一个名称。指定的名称将添加到subjectAlternativeNames标准的任何先前值中。如果指定的名称是重复的,则可能会被忽略。
名称以字节数组形式提供。此字节数组应包含DER编码的名称,如在RFC 5280和X.509中定义的GeneralName结构中出现的那样。编码的字节数组应仅包含名称在GeneralName结构中与名称相关联的标记。此结构的ASN.1定义如下。
GeneralName ::= CHOICE { otherName [0] OtherName, rfc822Name [1] IA5String, dNSName [2] IA5String, x400Address [3] ORAddress, directoryName [4] Name, ediPartyName [5] EDIPartyName, uniformResourceIdentifier [6] IA5String, iPAddress [7] OCTET STRING, registeredID [8] OBJECT IDENTIFIER}
请注意,此处提供的字节数组会被克隆,以防止后续修改。
- 参数:
-
type
- 名称类型(如上述列出的0-8) -
name
- 包含ASN.1 DER编码形式名称的字节数组 - 抛出:
-
IOException
- 如果发生解析错误
-
setNameConstraints
设置名称约束标准。X509Certificate
必须具有符合指定名称约束的主题和主题替代名称。名称约束以字节数组形式指定。此字节数组应包含名称约束的DER编码形式,如它们在RFC 5280和X.509中定义的NameConstraints结构中出现的那样。此结构的ASN.1定义如下。
NameConstraints ::= SEQUENCE { permittedSubtrees [0] GeneralSubtrees OPTIONAL, excludedSubtrees [1] GeneralSubtrees OPTIONAL } GeneralSubtrees ::= SEQUENCE SIZE (1..MAX) OF GeneralSubtree GeneralSubtree ::= SEQUENCE { base GeneralName, minimum [0] BaseDistance DEFAULT 0, maximum [1] BaseDistance OPTIONAL } BaseDistance ::= INTEGER (0..MAX) GeneralName ::= CHOICE { otherName [0] OtherName, rfc822Name [1] IA5String, dNSName [2] IA5String, x400Address [3] ORAddress, directoryName [4] Name, ediPartyName [5] EDIPartyName, uniformResourceIdentifier [6] IA5String, iPAddress [7] OCTET STRING, registeredID [8] OBJECT IDENTIFIER}
请注意,此处提供的字节数组会被克隆,以防止后续修改。
- 参数:
-
bytes
- 包含用于检查名称约束的NameConstraints扩展的ASN.1 DER编码的字节数组。仅包含扩展的值,不包括OID或关键性标志。可以为null
,在这种情况下将不执行名称约束检查。 - 抛出:
-
IOException
- 如果发生解析错误 - 参见:
-
setBasicConstraints
public void setBasicConstraints(int minMaxPathLen) 设置基本约束约束。如果值大于或等于零,则X509Certificates
必须包含具有至少此值的pathLen的basicConstraints扩展。如果值为-2,则仅接受终端实体证书。如果值为-1,则不执行检查。在向前构建认证路径(从目标到信任锚点)时,此约束很有用。如果已构建了部分路径,则任何候选证书的maxPathLen值必须大于或等于部分路径中的证书数量。
- 参数:
-
minMaxPathLen
- 基本约束约束的值 - 抛出:
-
IllegalArgumentException
- 如果值小于-2 - 参见:
-
setPolicy
设置策略约束。X509Certificate
必须在其证书策略扩展中包含至少一个指定策略。如果certPolicySet
为空,则X509Certificate
必须在其证书策略扩展中包含至少一些指定策略。如果certPolicySet
为null
,则不会执行策略检查。请注意,
Set
会被克隆以防止后续修改。- 参数:
-
certPolicySet
- 以字符串格式表示的证书策略OID的Set
(或null
)。每个OID由一组以句点分隔的非负整数表示。 - 抛出:
-
IOException
- 如果OID上发生解析错误,例如第一个组件不是0、1或2,或第二个组件大于39。 - 参见:
-
setPathToNames
设置pathToNames标准。X509Certificate
不得包含禁止构建到指定名称的路径的名称约束。此方法允许调用者通过单个方法调用指定
X509Certificates
的名称约束必须允许的完整名称集。指定的值将替换pathToNames标准的先前值。在向前构建认证路径(从目标到信任锚点)时,此约束很有用。如果已构建了部分路径,则任何候选证书不得包含禁止构建到部分路径中任何名称的路径的名称约束。
names
参数(如果不为null
)是一个Collection
,每个名称对应一个条目,用于包含在pathToNames标准中。每个条目是一个List
,其第一个条目是一个Integer
(名称类型,0-8),第二个条目是一个String
或字节数组(名称,分别为字符串或ASN.1 DER编码形式)。可以有相同类型的多个名称。如果为此参数提供null
值,则不会执行pathToNames检查。每个
Collection
中的名称可以指定为String
或ASN.1编码的字节数组。有关使用的格式的更多详细信息,请参阅addPathToName(int type, String name)
和addPathToName(int type, byte [] name)
。注意:对于专有名称,请使用字节数组形式而不是字符串形式。有关更多信息,请参阅
addPathToName(int, String)
中的注释。请注意,
names
参数可能包含重复名称(相同名称和名称类型),但它们可能会从getPathToNames
方法返回的名称集合中删除。请注意,对
Collection
执行深层复制以防止后续修改。- 参数:
-
names
- 每个名称一个条目的Collection
(或null
) - 抛出:
-
IOException
- 如果发生解析错误 - 参见:
-
addPathToName
将名称添加到pathToNames标准。X509Certificate
不得包含禁止构建到指定名称的路径的名称约束。此方法允许调用者将名称添加到
X509Certificates
的名称约束必须允许的名称集中。指定的名称将添加到pathToNames标准的任何先前值中。如果名称是重复的,则可能会被忽略。名称以字符串格式提供。RFC 822、DNS和URI名称使用这些类型的已知字符串格式(受RFC 5280中包含的限制约束)。IPv4地址名称使用点分四进制表示法提供。OID地址名称表示为一系列以句点分隔的非负整数。目录名称(专有名称)以RFC 2253格式提供。其他名称类型(otherNames、X.400名称、EDI party名称、IPv6地址名称或任何其他类型的名称)没有定义标准字符串格式。它们应使用
addPathToName(int type, byte [] name)
方法指定。注意:对于专有名称,请使用addPathToName(int, byte[])。不应依赖此方法,因为由于RFC 2253字符串形式中某些专有名称的编码信息丢失,可能无法匹配某些证书。
- 参数:
-
type
- 名称类型(0-8,如RFC 5280第4.2.1.6节中所述) -
name
- 字符串形式的名称 - 抛出:
-
IOException
- 如果发生解析错误
-
addPathToName
将名称添加到pathToNames标准。X509Certificate
不得包含禁止构建到指定名称的路径的名称约束。此方法允许调用者将名称添加到
X509Certificates
的名称约束必须允许的名称集中。指定的名称将添加到pathToNames标准的任何先前值中。如果名称是重复的,则可能会被忽略。名称以字节数组形式提供。此字节数组应包含DER编码的名称,如在RFC 5280和X.509中定义的GeneralName结构中所示。此结构的ASN.1定义在
addSubjectAlternativeName(int type, byte [] name)
的文档中提供。请注意,此处提供的字节数组将被克隆以防止后续修改。
- 参数:
-
type
- 名称类型(0-8,如RFC 5280第4.2.1.6节中所述) -
name
- 包含ASN.1 DER编码形式名称的字节数组 - 抛出:
-
IOException
- 如果发生解析错误
-
getCertificate
返回证书相等标准。指定的X509Certificate
必须等于传递给match
方法的X509Certificate
。如果为null
,则不应用此检查。- 返回:
-
要匹配的
X509Certificate
(或null
) - 参见:
-
getSerialNumber
返回序列号标准。指定的序列号必须与X509Certificate
中的证书序列号匹配。如果为null
,则任何证书序列号都可以。- 返回:
-
要匹配的证书序列号(或
null
) - 参见:
-
getIssuer
返回颁发者标准作为X500Principal
。此专有名称必须与X509Certificate
中的颁发者专有名称匹配。如果为null
,则禁用颁发者标准,任何颁发者专有名称都可以。- 返回:
-
所需的颁发者专有名称作为X500Principal(或
null
) - 自JDK 1.5起:
- 1.5
-
getIssuerAsString
Deprecated.UsegetIssuer()
orgetIssuerAsBytes()
instead. This method should not be relied on as it can fail to match some certificates because of a loss of encoding information in the RFC 2253 String form of some distinguished names.返回颁发者标准作为String
。此专有名称必须与X509Certificate
中的颁发者专有名称匹配。如果为null
,则禁用颁发者标准,任何颁发者专有名称都可以。如果返回的值不为
null
,则它是一个专有名称,采用RFC 2253格式。- 返回:
-
以RFC 2253格式表示的所需颁发者专有名称(或
null
)
-
getIssuerAsBytes
返回颁发者标准作为字节数组。此专有名称必须与X509Certificate
中的颁发者专有名称匹配。如果为null
,则禁用颁发者标准,任何颁发者专有名称都可以。如果返回的值不为
null
,则它是一个包含单个DER编码专有名称的字节数组,如X.501中定义。此结构的ASN.1表示法在setIssuer(byte[])
的文档中提供。请注意,返回的字节数组将被克隆以防止后续修改。
- 返回:
-
包含所需颁发者专有名称的字节数组,以ASN.1 DER格式表示(或
null
) - 抛出:
-
IOException
- 如果发生编码错误
-
getSubject
返回主题准则作为X500Principal
。此专有名称必须与X509Certificate
中的主题专有名称匹配。如果为null
,则主题准则已禁用,任何主题专有名称均可。- 返回:
-
作为X500Principal的所需主题专有名称(或
null
) - 自:
- 1.5
-
getSubjectAsString
Deprecated.UsegetSubject()
orgetSubjectAsBytes()
instead. This method should not be relied on as it can fail to match some certificates because of a loss of encoding information in the RFC 2253 String form of some distinguished names.返回主题准则作为String
。此专有名称必须与X509Certificate
中的主题专有名称匹配。如果为null
,则主题准则已禁用,任何主题专有名称均可。如果返回的值不为
null
,则为一个专有名称,采用RFC 2253格式。- 返回:
-
以RFC 2253格式表示的所需主题专有名称(或
null
)
-
getSubjectAsBytes
返回主题准则作为字节数组。此专有名称必须与X509Certificate
中的主题专有名称匹配。如果为null
,则主题准则已禁用,任何主题专有名称均可。如果返回的值不为
null
,则为一个包含单个DER编码专有名称的字节数组,如X.501中定义。有关此结构的ASN.1表示法,请参阅setSubject(byte[])
的文档。请注意,返回的字节数组已克隆,以防止后续修改。
- 返回:
-
包含所需主题专有名称的字节数组,以ASN.1 DER格式表示(或
null
) - 抛出:
-
IOException
- 如果发生编码错误
-
getSubjectKeyIdentifier
public byte[] getSubjectKeyIdentifier()返回subjectKeyIdentifier准则。必须包含具有指定值的SubjectKeyIdentifier扩展的X509Certificate
。如果为null
,则不会执行subjectKeyIdentifier检查。请注意,返回的字节数组已克隆,以防止后续修改。
- 返回:
-
密钥标识符(或
null
) - 参见:
-
getAuthorityKeyIdentifier
public byte[] getAuthorityKeyIdentifier()返回authorityKeyIdentifier准则。必须包含具有指定值的AuthorityKeyIdentifier扩展的X509Certificate
。如果为null
,则不会执行authorityKeyIdentifier检查。请注意,返回的字节数组已克隆,以防止后续修改。
- 返回:
-
密钥标识符(或
null
) - 参见:
-
getCertificateValid
返回certificateValid准则。指定的日期必须在X509Certificate
的证书有效期内。如果为null
,则不会执行certificateValid检查。请注意,返回的
Date
已克隆,以防止后续修改。- 返回:
-
要检查的
Date
(或null
) - 参见:
-
getPrivateKeyValid
返回privateKeyValid准则。指定的日期必须在X509Certificate
的私钥有效期内。如果为null
,则不会执行privateKeyValid检查。请注意,返回的
Date
已克隆,以防止后续修改。- 返回:
-
要检查的
Date
(或null
) - 参见:
-
getSubjectPublicKeyAlgID
返回subjectPublicKeyAlgID准则。必须包含具有指定算法的主题公钥的X509Certificate
。如果为null
,则不会执行subjectPublicKeyAlgID检查。- 返回:
-
要检查的签名算法的对象标识符(OID)(或
null
)。OID由一组用句点分隔的非负整数表示。 - 参见:
-
getSubjectPublicKey
返回subjectPublicKey准则。必须包含指定的主题公钥的X509Certificate
。如果为null
,则不会执行subjectPublicKey检查。- 返回:
-
要检查的主题公钥(或
null
) - 参见:
-
getKeyUsage
public boolean[] getKeyUsage()返回keyUsage准则。必须允许X509Certificate
中指定的keyUsage值。如果为null,则不会执行keyUsage检查。请注意,返回的布尔数组已克隆,以防止后续修改。
- 返回:
-
与
X509Certificate.getKeyUsage()
返回的布尔数组格式相同的布尔数组。或null
。 - 参见:
-
getExtendedKeyUsage
返回extendedKeyUsage准则。必须允许X509Certificate
中扩展密钥用途扩展中指定的密钥用途。如果返回的keyPurposeSet
为空或null
,则不会执行extendedKeyUsage检查。请注意,没有扩展密钥用途扩展的X509Certificate
隐含允许所有密钥用途。- 返回:
-
以字符串格式表示的密钥用途OID的不可变
Set
(或null
) - 参见:
-
getMatchAllSubjectAltNames
public boolean getMatchAllSubjectAltNames()指示X509Certificate
是否必须包含在setSubjectAlternativeNames
或addSubjectAlternativeName
方法中指定的所有或至少一个主题替代名称。如果为true
,则X509Certificate
必须包含所有指定的主题替代名称。如果为false
,则X509Certificate
必须包含至少一个指定的主题替代名称。- 返回:
-
如果启用了标志,则为
true
;如果禁用了标志,则为false
。默认情况下,标志为true
。 - 参见:
-
getSubjectAlternativeNames
返回主题替代名称准则的副本。必须包含X509Certificate
中指定的所有或至少一个主题替代名称,具体取决于matchAllNames标志的值(请参阅getMatchAllSubjectAltNames
)。如果返回的值为null
,则不会执行主题替代名称检查。如果返回的值不为
null
,则为一个Collection
,每个名称都有一个条目,用于包含在主题替代名称准则中。每个条目都是一个List
,其第一个条目是一个Integer
(名称类型,0-8),第二个条目是一个String
或字节数组(名称,分别为字符串或ASN.1 DER编码形式)。同一类型可能有多个名称。请注意,返回的Collection
可能包含重复名称(相同的名称和名称类型)。每个
Collection
中的主题替代名称可以指定为String
或ASN.1编码的字节数组。有关使用的格式的更多详细信息,请参阅addSubjectAlternativeName(int type, String name)
和addSubjectAlternativeName(int type, byte [] name)
。请注意,对
Collection
执行深层复制,以防止后续修改。- 返回:
-
名称的
Collection
(或null
) - 参见:
-
getNameConstraints
public byte[] getNameConstraints()返回名称约束准则。必须具有符合指定名称约束的主题和主题替代名称的X509Certificate
。名称约束以字节数组形式返回。此字节数组包含名称约束的DER编码形式,如其在RFC 5280和X.509中定义的NameConstraints结构中所示。有关此结构的ASN.1表示法,请参阅
setNameConstraints(byte [] bytes)
的文档。请注意,返回的字节数组已克隆,以防止后续修改。
- 返回:
-
包含用于检查名称约束的NameConstraints扩展的ASN.1 DER编码的字节数组。如果不执行名称约束检查,则为
null
。 - 参见:
-
getBasicConstraints
public int getBasicConstraints()返回基本约束条件。如果值大于或等于零,则X509Certificates
必须包含一个具有至少此值的pathLen的basicConstraints扩展。如果值为-2,则仅接受终端实体证书。如果值为-1,则不执行基本约束检查。- 返回:
- 基本约束条件的值
- 参见:
-
getPolicy
返回策略准则。X509Certificate
必须在其证书策略扩展中包含至少一个指定策略。如果返回的Set
为空,则X509Certificate
必须在其证书策略扩展中包含至少一些指定策略。如果返回的Set
为null
,则不会执行策略检查。- 返回:
-
以字符串格式返回的证书策略OID的不可变
Set
(或null
) - 参见:
-
getPathToNames
返回路径名称准则的副本。X509Certificate
不得包含禁止构建到指定名称的路径的名称约束。如果返回的值为null
,则不会执行路径名称检查。如果返回的值不为
null
,则它是一个Collection
,每个名称都包含在路径名称准则中。每个条目都是一个List
,其第一个条目是一个Integer
(名称类型,0-8),第二个条目是一个String
或字节数组(名称,分别为字符串或ASN.1 DER编码形式)。可以有多个相同类型的名称。请注意,返回的Collection
可能包含重复的名称(相同的名称和名称类型)。每个名称在
Collection
中可以指定为String
或ASN.1编码的字节数组。有关使用的格式的更多详细信息,请参见addPathToName(int type, String name)
和addPathToName(int type, byte [] name)
。请注意,对
Collection
执行深度复制以防止后续修改。- 返回:
-
名称的
Collection
(或null
) - 参见:
-
toString
返回CertSelector
的可打印表示。 -
match
决定是否选择Certificate
。- 指定者:
-
match
在接口CertSelector
- 参数:
-
cert
- 要检查的Certificate
- 返回:
-
如果应选择
Certificate
,则返回true
,否则返回false
-
clone
返回此对象的副本。- 指定者:
-
clone
在接口CertSelector
- 覆盖:
-
clone
在类Object
- 返回:
- 该副本
- 参见:
-
getIssuer()
或getIssuerAsBytes()
代替。