- 所有已实现的接口:
Cloneable,CertSelector
X509Certificates 的 CertSelector。从 CertStore 中选择证书以构建符合 PKIX 的证书路径时,此类特别有用。
首次构造时,X509CertSelector 没有启用任何条件,并且每个 get 方法都返回一个默认值(null 或 getBasicConstraints 方法的 -1)。因此,match 方法将为任何 X509Certificate 返回 true。通常,会启用多个条件(例如,通过调用 setIssuer(X500Principal) 或 setKeyUsage ),然后将 X509CertSelector 传递给 CertStore.getCertificates 或某种类似方法。
可以启用多个条件(例如,通过调用 setIssuer(X500Principal) 和 setSerialNumber ),这样 match 方法通常唯一匹配单个 X509Certificate 。我们说通常,因为两个颁发 CA 可能具有相同的专有名称,并且每个颁发的证书具有相同的序列号。其他独特的组合包括颁发者、主题、主题密钥标识符和/或主题公钥标准。
请参阅 RFC 5280:Internet X.509 公钥基础结构证书和 CRL 配置文件 以了解下面提到的 X.509 证书扩展的定义。
并发访问
除非另有说明,否则此类中定义的方法不是线程安全的。需要同时访问单个对象的多个线程应该在它们之间同步并提供必要的锁定。每个操作单独对象的多个线程不需要同步。
- 自从:
- 1.4
- 参见:
-
构造方法总结
构造方法 -
方法总结
修饰符和类型方法描述voidaddPathToName(int type, byte[] name) 将名称添加到 pathToNames 条件。voidaddPathToName(int type, String name) 将名称添加到 pathToNames 条件。voidaddSubjectAlternativeName(int type, byte[] name) 将名称添加到 subjectAlternativeNames 条件。voidaddSubjectAlternativeName(int type, String name) 将名称添加到 subjectAlternativeNames 条件。clone()返回此对象的副本。byte[]返回 authorityKeyIdentifier 标准。int返回基本约束约束。返回 certificateEquals 标准。返回 certificateValid 标准。返回 extendedKeyUsage 标准。将发行者标准作为X500Principal返回。byte[]将发行者标准作为字节数组返回。已弃用。boolean[]返回 keyUsage 标准。boolean指示X509Certificate是否必须包含在setSubjectAlternativeNames或addSubjectAlternativeName方法中指定的所有或至少一个 subjectAlternativeNames。byte[]返回名称约束条件。Collection<List<?>>返回 pathToNames 条件的副本。返回策略标准。返回 privateKeyValid 标准。返回 serialNumber 标准。将主题标准作为X500Principal返回。Collection<List<?>>返回 subjectAlternativeNames 标准的副本。byte[]将主题标准作为字节数组返回。已弃用。请改用getSubject()或getSubjectAsBytes()。byte[]返回 subjectKeyIdentifier 标准。返回 subjectPublicKey 标准。返回 subjectPublicKeyAlgID 标准。booleanmatch(Certificate cert) 决定是否应选择Certificate。voidsetAuthorityKeyIdentifier(byte[] authorityKeyID) 设置 authorityKeyIdentifier 标准。voidsetBasicConstraints(int minMaxPathLen) 设置基本约束约束。void设置 certificateEquals 标准。voidsetCertificateValid(Date certValid) 设置 certificateValid 标准。voidsetExtendedKeyUsage(Set<String> keyPurposeSet) 设置 extendedKeyUsage 标准。voidsetIssuer(byte[] issuerDN) 设置发行者标准。void已弃用。voidsetIssuer(X500Principal issuer) 设置发行者标准。voidsetKeyUsage(boolean[] keyUsage) 设置 keyUsage 标准。voidsetMatchAllSubjectAltNames(boolean matchAllNames) 启用/禁用匹配setSubjectAlternativeNames或addSubjectAlternativeName方法中指定的所有 subjectAlternativeNames。voidsetNameConstraints(byte[] bytes) 设置名称约束标准。voidsetPathToNames(Collection<List<?>> names) 设置 pathToNames 标准。void设置策略约束。voidsetPrivateKeyValid(Date privateKeyValid) 设置 privateKeyValid 标准。voidsetSerialNumber(BigInteger serial) 设置 serialNumber 标准。voidsetSubject(byte[] subjectDN) 设置主题标准。voidsetSubject(String subjectDN) 已弃用。voidsetSubject(X500Principal subject) 设置主题标准。voidsetSubjectAlternativeNames(Collection<List<?>> names) 设置 subjectAlternativeNames 标准。voidsetSubjectKeyIdentifier(byte[] subjectKeyID) 设置 subjectKeyIdentifier 标准。voidsetSubjectPublicKey(byte[] key) 设置 subjectPublicKey 标准。void设置 subjectPublicKey 标准。void设置 subjectPublicKeyAlgID 标准。toString()返回CertSelector的可打印表示。
-
构造方法详细信息
-
X509CertSelector
public X509CertSelector()创建一个X509CertSelector。最初,没有设置任何条件,因此任何X509Certificate都将匹配。
-
-
方法详情
-
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
已弃用。请改用setIssuer(X500Principal)或setIssuer(byte[])。不应依赖此方法,因为它可能无法匹配某些证书,因为某些专有名称的 RFC 2253 字符串形式的编码信息丢失。设置发行者标准。指定的专有名称必须与X509Certificate中的颁发者专有名称相匹配。如果是null,任何发行者专有名称都可以。如果
issuerDN不是null,它应该包含一个专有名称,格式为 RFC 2253。- 参数:
issuerDN- RFC 2253 格式的专有名称(或null)- 抛出:
IOException- 如果发生解析错误(DN 的格式不正确)
-
setIssuer
设置发行者标准。指定的专有名称必须与X509Certificate中的颁发者专有名称相匹配。如果指定了null,则禁用发行者标准,任何发行者专有名称都可以。如果
issuerDN不是null,它应该包含单个 DER 编码的专有名称,如 X.501 中所定义。此结构的 ASN.1 表示法如下。Name ::= 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)的专有名称- 自从:
- 1.5
-
setSubject
已弃用。请改用setSubject(X500Principal)或setSubject(byte[])。不应依赖此方法,因为它可能无法匹配某些证书,因为某些专有名称的 RFC 2253 字符串形式的编码信息丢失。设置主题标准。指定的专有名称必须与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) 设置 subjectKeyIdentifier 标准。X509Certificate必须包含一个 SubjectKeyIdentifier 扩展,扩展的内容与指定的标准值相匹配。如果标准值为null,则不会进行 subjectKeyIdentifier 检查。如果
subjectKeyID不是null,它应该包含与 SubjectKeyIdentifier 扩展的扩展值内容对应的单个 DER 编码值(不包括对象标识符、关键性设置和封装 OCTET STRING)。此结构的 ASN.1 表示法如下。SubjectKeyIdentifier ::= KeyIdentifier KeyIdentifier ::= OCTET STRING由于主题密钥标识符的格式没有被任何标准强制要求,主题密钥标识符不被
X509CertSelector解析。相反,这些值是使用逐字节比较来比较的。请注意,此处提供的字节数组已被克隆以防止后续修改。
- 参数:
subjectKeyID- 主题密钥标识符(或null)- 参见:
-
setAuthorityKeyIdentifier
public void setAuthorityKeyIdentifier(byte[] authorityKeyID) 设置 authorityKeyIdentifier 标准。X509Certificate必须包含一个 AuthorityKeyIdentifier 扩展,扩展值的内容与指定的标准值相匹配。如果标准值为null,则不会进行 authorityKeyIdentifier 检查。如果
authorityKeyID不是null,它应该包含与 AuthorityKeyIdentifier 扩展的扩展值内容对应的单个 DER 编码值(不包括对象标识符、关键性设置和封装 OCTET STRING)。此结构的 ASN.1 表示法如下。AuthorityKeyIdentifier ::= SEQUENCE { keyIdentifier [0] KeyIdentifier OPTIONAL, authorityCertIssuer [1] GeneralNames OPTIONAL, authorityCertSerialNumber [2] CertificateSerialNumber OPTIONAL } KeyIdentifier ::= OCTET STRINGX509CertSelector不解析权限密钥标识符。相反,这些值是使用逐字节比较来比较的。当填充
AuthorityKeyIdentifier的keyIdentifier字段时,该值通常取自颁发者证书中的SubjectKeyIdentifier扩展名。但是请注意,颁发者证书上X509Certificate.getExtensionValue(<SubjectKeyIdentifier Object Identifier>)的结果不能直接用作setAuthorityKeyIdentifier的输入。这是因为 SubjectKeyIdentifier 只包含一个 KeyIdentifier OCTET STRING,而不是 KeyIdentifier、GeneralNames 和 CertificateSerialNumber 的序列。为了使用颁发者证书的SubjectKeyIdentifier扩展的扩展值,需要提取嵌入的KeyIdentifierOCTET STRING 的值,然后将此 OCTET STRING DER 编码在一个 SEQUENCE 中。有关 SubjectKeyIdentifier 的更多详细信息,请参阅setSubjectKeyIdentifier(byte[] subjectKeyID)。另请注意,此处提供的字节数组已被克隆以防止后续修改。
- 参数:
authorityKeyID- 权限密钥标识符(或null)- 参见:
-
setCertificateValid
设置 certificateValid 标准。指定的日期必须在X509Certificate的证书有效期内。如果是null,则不会进行 certificateValid 检查。请注意,此处提供的
Date已被克隆以防止后续修改。- 参数:
certValid- 要检查的Date(或null)- 参见:
-
setPrivateKeyValid
设置 privateKeyValid 标准。指定日期必须在X509Certificate的私钥有效期内。如果是null,则不会进行 privateKeyValid 检查。请注意,此处提供的
Date已被克隆以防止后续修改。- 参数:
privateKeyValid- 要检查的Date(或null)- 参见:
-
setSubjectPublicKeyAlgID
设置 subjectPublicKeyAlgID 标准。X509Certificate必须包含具有指定算法的主题公钥。如果是null,则不会进行 subjectPublicKeyAlgID 检查。- 参数:
oid- 要检查的算法的对象标识符 (OID)(或null)。 OID 由一组由句点分隔的非负整数表示。- 抛出:
IOException- 如果 OID 无效,例如第一个组件不是 0、1 或 2,或者第二个组件大于 39。- 参见:
-
setSubjectPublicKey
设置 subjectPublicKey 标准。X509Certificate必须包含指定的主题公钥。如果是null,则不会进行 subjectPublicKey 检查。- 参数:
key- 要检查的主题公钥(或null)- 参见:
-
setSubjectPublicKey
设置 subjectPublicKey 标准。X509Certificate必须包含指定的主题公钥。如果是null,则不会进行 subjectPublicKey 检查。由于此方法允许将公钥指定为字节数组,因此它可能用于未知密钥类型。
如果
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- 一个Set字符串格式的关键用途 OID(或null)。每个 OID 由一组由句点分隔的非负整数表示。- 抛出:
IOException- 如果 OID 无效,例如第一个组件不是 0、1 或 2,或者第二个组件大于 39。- 参见:
-
setMatchAllSubjectAltNames
public void setMatchAllSubjectAltNames(boolean matchAllNames) 启用/禁用匹配setSubjectAlternativeNames或addSubjectAlternativeName方法中指定的所有 subjectAlternativeNames。如果启用,X509Certificate必须包含所有指定的主题备用名称。如果禁用,X509Certificate必须至少包含一个指定的主题备用名称。matchAllNames 标志默认为
true。- 参数:
matchAllNames- 如果是true,则启用标志;如果是false,则该标志被禁用。- 参见:
-
setSubjectAlternativeNames
设置 subjectAlternativeNames 标准。X509Certificate必须包含所有或至少一个指定的 subjectAlternativeNames,具体取决于 matchAllNames 标志的值(请参阅setMatchAllSubjectAltNames)。此方法允许调用者通过单个方法调用为 subjectAlternativeNames 标准指定完整的主题替代名称集。指定的值替换 subjectAlternativeNames 标准的先前值。
names参数(如果不是null)是一个Collection,每个名称都有一个条目要包含在主题替代名称标准中。每个条目都是一个List,其第一个条目是一个Integer(名称类型,0-8),第二个条目是一个String或字节数组(名称,分别为字符串或 ASN.1 DER 编码形式)。同一类型可以有多个名称。如果提供null作为此参数的值,则不会执行 subjectAlternativeNames 检查。Collection中的每个主题替代名称可以指定为String或 ASN.1 编码字节数组。有关所用格式的更多详细信息,请参阅addSubjectAlternativeName(int type, String name)和addSubjectAlternativeName(int type, byte [] name)。Note: 对于专有名称,指定字节数组形式而不是字符串形式。有关详细信息,请参阅
addSubjectAlternativeName(int, String)中的注释。请注意,
names参数可以包含重复的名称(相同的名称和名称类型),但它们可能会从getSubjectAlternativeNames方法返回的名称的Collection中删除。请注意,在
Collection上执行了深层复制以防止后续修改。- 参数:
names- 一个Collection的名字(或null)- 抛出:
IOException- 如果发生解析错误- 参见:
-
addSubjectAlternativeName
将名称添加到 subjectAlternativeNames 条件。X509Certificate必须包含所有或至少一个指定的 subjectAlternativeNames,具体取决于 matchAllNames 标志的值(请参阅setMatchAllSubjectAltNames)。此方法允许调用者将名称添加到主题备用名称集中。指定的名称将添加到 subjectAlternativeNames 条件的任何先前值。如果指定的名称重复,则可能会被忽略。
名称以字符串格式提供。 RFC 822、DNS 和 URI 名称对这些类型使用公认的字符串格式(受 RFC 5280 中包含的限制约束)。 IPv4 地址名称使用点分四组表示法提供。 OID 地址名称表示为一系列由句点分隔的非负整数。目录名称(专有名称)以 RFC 2253 格式提供。没有为 otherNames、X.400 名称、EDI 方名称、IPv6 地址名称或任何其他类型的名称定义标准字符串格式。它们应该使用
addSubjectAlternativeName(int type, byte [] name)方法指定。Note: 对于专有名称,请改用 addSubjectAlternativeName(int, byte[])。不应依赖此方法,因为它可能无法匹配某些证书,因为某些专有名称的 RFC 2253 字符串形式的编码信息丢失。
- 参数:
type- 名称类型(0-8,如 RFC 5280 第 4.2.1.6 节中所指定)name- 字符串形式的名称(不是null)- 抛出:
IOException- 如果发生解析错误
-
addSubjectAlternativeName
将名称添加到 subjectAlternativeNames 条件。X509Certificate必须包含所有或至少一个指定的 subjectAlternativeNames,具体取决于 matchAllNames 标志的值(请参阅setMatchAllSubjectAltNames)。此方法允许调用者将名称添加到主题备用名称集中。指定的名称将添加到 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必须包含一个 basicConstraints 扩展,其 pathLen 至少为该值。如果值为 -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)。Note: 对于专有名称,指定字节数组形式而不是字符串形式。有关详细信息,请参阅
addPathToName(int, String)中的注释。请注意,
names参数可以包含重复的名称(相同的名称和名称类型),但它们可能会从getPathToNames方法返回的名称的Collection中删除。请注意,在
Collection上执行了深层复制以防止后续修改。- 参数:
names- 一个Collection每个名称一个条目(或null)- 抛出:
IOException- 如果发生解析错误- 参见:
-
addPathToName
将名称添加到 pathToNames 条件。X509Certificate不得包含禁止构建指定名称路径的名称约束。此方法允许调用者将名称添加到
X509Certificates的名称约束必须允许的名称集中。指定的名称将添加到 pathToNames 条件的任何先前值。如果名称重复,则可能会被忽略。名称以字符串格式提供。 RFC 822、DNS 和 URI 名称对这些类型使用公认的字符串格式(受 RFC 5280 中包含的限制约束)。 IPv4 地址名称使用点分四组表示法提供。 OID 地址名称表示为一系列由句点分隔的非负整数。目录名称(专有名称)以 RFC 2253 格式提供。没有为 otherNames、X.400 名称、EDI 方名称、IPv6 地址名称或任何其他类型的名称定义标准字符串格式。它们应该使用
addPathToName(int type, byte [] name)方法指定。Note: 对于专有名称,请改用 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
返回 certificateEquals 标准。指定的X509Certificate必须等于传递给match方法的X509Certificate。如果是null,则不应用此检查。- 返回:
X509Certificate匹配(或null)- 参见:
-
getSerialNumber
返回 serialNumber 标准。指定的序列号必须与X509Certificate中的证书序列号匹配。如果是null,任何证书序列号都可以。- 返回:
-
要匹配的证书序列号(或
null) - 参见:
-
getIssuer
将发行者标准作为X500Principal返回。此专有名称必须与X509Certificate中的颁发者专有名称相匹配。如果null,发行者标准被禁用,任何发行者专有名称都可以。- 返回:
-
所需的颁发者专有名称为 X500Principal(或
null) - 自从:
- 1.5
-
getIssuerAsString
已弃用。请改用getIssuer()或getIssuerAsBytes()。不应依赖此方法,因为它可能无法匹配某些证书,因为某些专有名称的 RFC 2253 字符串形式的编码信息丢失。将发行者标准返回为String。此专有名称必须与X509Certificate中的颁发者专有名称相匹配。如果null,发行者标准被禁用,任何发行者专有名称都可以。如果返回的值不是
null,则它是一个专有名称,采用 RFC 2253 格式。- 返回:
-
RFC 2253 格式(或
null)中所需的颁发者专有名称
-
getIssuerAsBytes
将发行者标准作为字节数组返回。此专有名称必须与X509Certificate中的颁发者专有名称相匹配。如果null,发行者标准被禁用,任何发行者专有名称都可以。如果返回的值不是
null,它是一个包含单个 DER 编码专有名称的字节数组,如 X.501 中所定义。setIssuer(byte[])的文档中提供了此结构的 ASN.1 表示法。请注意,返回的字节数组被克隆以防止后续修改。
- 返回:
-
包含 ASN.1 DER 格式(或
null)所需的颁发者专有名称的字节数组 - 抛出:
IOException- 如果发生编码错误
-
getSubject
将主题标准作为X500Principal返回。此专有名称必须与X509Certificate中的主题专有名称相匹配。如果是null,主题标准被禁用,任何主题专有名称都可以。- 返回:
-
所需的主题专有名称为 X500Principal(或
null) - 自从:
- 1.5
-
getSubjectAsString
已弃用。请改用getSubject()或getSubjectAsBytes()。不应依赖此方法,因为它可能无法匹配某些证书,因为某些专有名称的 RFC 2253 字符串形式的编码信息丢失。将主题标准作为String返回。此专有名称必须与X509Certificate中的主题专有名称相匹配。如果是null,主题标准被禁用,任何主题专有名称都可以。如果返回的值不是
null,则它是一个专有名称,采用 RFC 2253 格式。- 返回:
-
RFC 2253 格式(或
null)中所需的主题专有名称
-
getSubjectAsBytes
将主题标准作为字节数组返回。此专有名称必须与X509Certificate中的主题专有名称相匹配。如果是null,主题标准被禁用,任何主题专有名称都可以。如果返回的值不是
null,它是一个包含单个 DER 编码专有名称的字节数组,如 X.501 中所定义。setSubject(byte[])的文档中提供了此结构的 ASN.1 表示法。请注意,返回的字节数组被克隆以防止后续修改。
- 返回:
-
包含 ASN.1 DER 格式(或
null)中所需主题专有名称的字节数组 - 抛出:
IOException- 如果发生编码错误
-
getSubjectKeyIdentifier
public byte[] getSubjectKeyIdentifier()返回 subjectKeyIdentifier 标准。X509Certificate必须包含具有指定值的 SubjectKeyIdentifier 扩展。如果是null,则不会进行 subjectKeyIdentifier 检查。请注意,返回的字节数组被克隆以防止后续修改。
- 返回:
-
密钥标识符(或
null) - 参见:
-
getAuthorityKeyIdentifier
public byte[] getAuthorityKeyIdentifier()返回 authorityKeyIdentifier 标准。X509Certificate必须包含具有指定值的 AuthorityKeyIdentifier 扩展。如果是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 检查。请注意,没有 extendedKeyUsage 扩展的X509Certificate隐式允许所有密钥用途。- 返回:
-
字符串格式(或
null)的关键用途 OID 的不可变Set - 参见:
-
getMatchAllSubjectAltNames
public boolean getMatchAllSubjectAltNames()指示X509Certificate是否必须包含在setSubjectAlternativeNames或addSubjectAlternativeName方法中指定的所有或至少一个 subjectAlternativeNames。如果是true,则X509Certificate必须包含所有指定的主题备用名称。如果是false,则X509Certificate必须至少包含指定的主题替代名称之一。- 返回:
true如果启用标志;false如果标志被禁用。该标志默认为true。- 参见:
-
getSubjectAlternativeNames
返回 subjectAlternativeNames 标准的副本。X509Certificate必须包含所有或至少一个指定的 subjectAlternativeNames,具体取决于 matchAllNames 标志的值(请参阅getMatchAllSubjectAltNames)。如果返回的值为null,则不会执行 subjectAlternativeNames 检查。如果返回的值不是
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 结构中。
setNameConstraints(byte [] bytes)的文档中提供了此结构的 ASN.1 表示法。请注意,返回的字节数组被克隆以防止后续修改。
- 返回:
-
包含用于检查名称约束的 NameConstraints 扩展的 ASN.1 DER 编码的字节数组。
null如果不执行名称约束检查。 - 参见:
-
getBasicConstraints
public int getBasicConstraints()返回基本约束约束。如果该值大于或等于零,X509Certificates必须包含一个 basicConstraints 扩展,其 pathLen 至少为该值。如果值为 -2,则仅接受最终实体证书。如果值为 -1,则不执行 basicConstraints 检查。- 返回:
- 基本约束约束的值
- 参见:
-
getPolicy
返回策略标准。X509Certificate必须在其证书策略扩展中至少包含一个指定的策略。如果返回的Set为空,则X509Certificate必须在其证书策略扩展中至少包含一些指定的策略。如果返回的Set是null,则不会执行任何策略检查。- 返回:
-
字符串格式(或
null)的证书策略 OID 的不可变Set - 参见:
-
getPathToNames
返回 pathToNames 条件的副本。X509Certificate不得包含禁止构建指定名称路径的名称约束。如果返回的值为null,则不会执行 pathToNames 检查。如果返回的值不是
null,则它是一个Collection,每个名称都有一个条目包含在 pathToNames 标准中。每个条目都是一个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- 返回:
true如果应选择Certificate,false否则
-
clone
返回此对象的副本。- 指定者:
clone在接口CertSelector中- 重写:
clone在类Object中- 返回:
- 副本
- 参见:
-
getIssuer()或getIssuerAsBytes()。