模块  java.base
软件包  java.security.cert

Class X509CertSelector

  • 实现的所有接口
    CloneableCertSelector

    public class X509CertSelector
    extends Object
    implements CertSelector
    一个CertSelector ,它选择符合所有指定条件的X509Certificates CertStore选择证书以构建符合PKIX的证书路径时,此类特别有用。

    首次构建时, X509CertSelector未启用任何条件,并且每个get方法都返回默认值( null ,或-1用于getBasicConstraints方法)。 因此, match方法将返回true任何X509Certificate 通常,启用几个条件(例如,通过调用setIssuersetKeyUsage ),然后将X509CertSelector传递给CertStore.getCertificates或某些类似的方法。

    可以启用多个条件(例如,通过调用setIssuersetSerialNumber ),使得match方法通常唯一匹配单个X509Certificate 我们通常说,因为两个颁发CA可能具有相同的可分辨名称,并且每个颁发具有相同序列号的证书。 其他独特的组合包括issuer,subject,subjectKeyIdentifier和/或subjectPublicKey标准。

    有关下面提到的X.509证书扩展的定义,请参阅RFC 5280: Internet X.509 Public Key Infrastructure Certificate and CRL Profile

    并发访问

    除非另有说明,否则此类中定义的方法不是线程安全的。 需要同时访问单个对象的多个线程应在它们之间进行同步并提供必要的锁定。 每个操作单独对象的多个线程不需要同步。

    从以下版本开始:
    1.4
    另请参见:
    CertSelectorX509Certificate
    • 构造方法详细信息

      • X509CertSelector

        public X509CertSelector()
        创建一个X509CertSelector 最初,没有设置任何标准,因此任何X509Certificate都将匹配。
    • 方法详细信息

      • setCertificate

        public void setCertificate​(X509Certificate cert)
        设置certificateEquals标准。 指定X509Certificate必须等于X509Certificate传递给match方法。 如果是null ,则不应用此检查。

        当需要匹配单个证书时,此方法特别有用。 虽然可以结合certificateEquals标准指定其他标准,但通常不实用或不必要。

        参数
        cert - 匹配的 X509Certificate (或 null
        另请参见:
        getCertificate()
      • setSerialNumber

        public void setSerialNumber​(BigInteger serial)
        设置serialNumber标准。 指定的序列号必须与X509Certificate中的证书序列号匹配。 如果是null ,任何证书序列号都可以。
        参数
        serial - 要匹配的证书序列号(或 null
        另请参见:
        getSerialNumber()
      • setIssuer

        public void setIssuer​(X500Principal issuer)
        设置颁发者标准。 指定的专有名称必须与X509Certificate中的颁发者专有名称匹配。 如果是null ,任何发行人的专有名称都可以。
        参数
        issuer - 尊敬的名字 null (或 null
        从以下版本开始:
        1.5
      • setIssuer

        public void setIssuer​(String issuerDN)
                       throws IOException
        诋毁 ,利用setIssuer(X500Principal)setIssuer(byte[])代替。 不应该依赖此方法,因为它可能无法匹配某些证书,因为某些可分辨名称的RFC 2253字符串形式中丢失了编码信息。

        设置颁发者标准。 指定的专有名称必须与X509Certificate中的颁发者专有名称匹配。 如果是null ,任何发行人的专有名称都可以。

        如果issuerDN不是null ,则它应包含RFC 2253格式的可分辨名称。

        参数
        issuerDN - RFC 2253格式的专有名称(或 null
        异常
        IOException - 如果发生解析错误(DN格式不正确)
      • setIssuer

        public void setIssuer​(byte[] issuerDN)
                       throws IOException
        设置颁发者标准。 指定的专有名称必须与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

        public void setSubject​(X500Principal subject)
        设置主题标准。 指定的专有名称必须与X509Certificate中的主题专有名称匹配。 如果是null ,任何主题专有名称都可以。
        参数
        subject - 尊敬的名字 null (或 null
        从以下版本开始:
        1.5
      • setSubject

        public void setSubject​(String subjectDN)
                        throws IOException
        删除 ,请改用setSubject(X500Principal)setSubject(byte[]) 不应该依赖此方法,因为它可能无法匹配某些证书,因为某些可分辨名称的RFC 2253字符串形式中的编码信息丢失。

        设置主题标准。 指定的专有名称必须与X509Certificate中的主题专有名称匹配。 如果是null ,任何主题专有名称都可以。

        如果subjectDN不是null ,则它应包含RFC 2253格式的可分辨名称。

        参数
        subjectDN - RFC 2253格式的专有名称(或 null
        异常
        IOException - 如果发生解析错误(DN格式不正确)
      • setSubject

        public void setSubject​(byte[] subjectDN)
                        throws IOException
        设置主题标准。 指定的专有名称必须与X509Certificate中的主题专有名称匹配。 如果是null ,任何主题专有名称都可以。

        如果subjectDN不是null ,则它应包含单个DER编码的可分辨名称,如X.501中所定义。 有关此结构的ASN.1表示法,请参阅setIssuer(byte [] issuerDN)

        参数
        subjectDN - 包含ASN.1 DER格式(或 null )的可分辨名称的字节数组
        异常
        IOException - 如果发生编码错误(DN格式不正确)
      • setSubjectKeyIdentifier

        public void setSubjectKeyIdentifier​(byte[] subjectKeyID)
        设置subjectKeyIdentifier标准。 X509Certificate必须包含SubjectKeyIdentifier扩展,其扩展名的内容与指定的标准值匹配。 如果标准值为null ,则不会执行subjectKeyIdentifier检查。

        如果subjectKeyID不是null ,则它应包含对应于SubjectKeyIdentifier扩展的扩展值的内容(不包括对象标识符,临界设置和封装OCTET STRING)的单个DER编码值。 下面是该结构的ASN.1表示法。

           SubjectKeyIdentifier ::= KeyIdentifier KeyIdentifier ::= OCTET STRING  

        由于主题密钥标识符的格式不是任何标准的强制要求,因此主题密钥标识符不会被X509CertSelector解析。 相反,使用逐字节比较来比较值。

        请注意,克隆此处提供的字节数组以防止后续修改。

        参数
        subjectKeyID - 主题密钥标识符(或 null
        另请参见:
        getSubjectKeyIdentifier()
      • setAuthorityKeyIdentifier

        public void setAuthorityKeyIdentifier​(byte[] authorityKeyID)
        设置authorityKeyIdentifier标准。 X509Certificate必须包含AuthorityKeyIdentifier扩展,扩展值的内容与指定的标准值匹配。 如果标准值为null ,则不会执行authorityKeyIdentifier检查。

        如果authorityKeyID不是null ,则它应包含对应于AuthorityKeyIdentifier扩展的扩展值的内容(不包括对象标识符,临界设置和封装OCTET STRING)的单个DER编码值。 下面是该结构的ASN.1表示法。

           AuthorityKeyIdentifier ::= SEQUENCE { keyIdentifier [0] KeyIdentifier OPTIONAL, authorityCertIssuer [1] GeneralNames OPTIONAL, authorityCertSerialNumber [2] CertificateSerialNumber OPTIONAL } KeyIdentifier ::= OCTET STRING  

        X509CertSelector不解析授权密钥标识符。 相反,使用逐字节比较来比较值。

        当填充AuthorityKeyIdentifierkeyIdentifier字段时,该值通常取自颁发者证书中的SubjectKeyIdentifier扩展名。 但请注意,发行人证书上X509Certificate.getExtensionValue(<SubjectKeyIdentifier Object Identifier>)的结果不能直接用作setAuthorityKeyIdentifier的输入。 这是因为SubjectKeyIdentifier仅包含KeyIdentifier OCTET STRING,而不包含KeyIdentifier,GeneralNames和CertificateSerialNumber的SEQUENCE。 为了使用发行者证书的扩展值SubjectKeyIdentifier扩展,有必要提取嵌入式KeyIdentifier OCTET STRING的值,然后在SEQUENCE中对该OCTET STRING进行DER编码。 有关SubjectKeyIdentifier的更多详细信息,请参阅setSubjectKeyIdentifier(byte[] subjectKeyID)

        另请注意,此处提供的字节数组是克隆的,以防止后续修改。

        参数
        authorityKeyID - 授权密钥标识符(或 null
        另请参见:
        getAuthorityKeyIdentifier()
      • setCertificateValid

        public void setCertificateValid​(Date certValid)
        设置certificateValid标准。 指定日期必须在X509Certificate的证书有效期内。 如果是null ,则不会执行certificateValid检查。

        请注意, Date提供的Date是克隆的,以防止后续修改。

        参数
        certValid -将 Date检查(或 null
        另请参见:
        getCertificateValid()
      • setPrivateKeyValid

        public void setPrivateKeyValid​(Date privateKeyValid)
        设置privateKeyValid标准。 指定日期必须在X509Certificate的私钥有效期内。 如果是null ,则不会进行privateKeyValid检查。

        请注意, Date提供的Date是克隆的,以防止后续修改。

        参数
        privateKeyValid -将 Date检查(或 null
        另请参见:
        getPrivateKeyValid()
      • setSubjectPublicKeyAlgID

        public void setSubjectPublicKeyAlgID​(String oid)
                                      throws IOException
        设置subjectPublicKeyAlgID标准。 X509Certificate必须包含具有指定算法的主题公钥。 如果是null ,则不会进行subjectPublicKeyAlgID检查。
        参数
        oid - 要检查的算法的对象标识符(OID)(或null )。 OID由一组以句点分隔的非负整数表示。
        异常
        IOException - 如果OID无效,例如第一个组件不是0,1或2,或者第二个组件大于39。
        另请参见:
        getSubjectPublicKeyAlgID()
      • setSubjectPublicKey

        public void setSubjectPublicKey​(PublicKey key)
        设置subjectPublicKey标准。 X509Certificate必须包含指定的主题公钥。 如果是null ,则不会进行subjectPublicKey检查。
        参数
        key - 要检查的主题公钥(或 null
        另请参见:
        getSubjectPublicKey()
      • setSubjectPublicKey

        public void setSubjectPublicKey​(byte[] key)
                                 throws IOException
        设置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 - 如果发生编码错误(主题公钥的格式不正确)
        另请参见:
        getSubjectPublicKey()
      • setKeyUsage

        public void setKeyUsage​(boolean[] keyUsage)
        设置keyUsage标准。 X509Certificate必须允许指定的keyUsage值。 如果是null ,则不会执行keyUsage检查。 请注意,没有keyUsage扩展的X509Certificate隐式允许所有keyUsage值。

        请注意,克隆此处提供的布尔数组以防止后续修改。

        参数
        keyUsage - 布尔数组,格式与X509Certificate.getKeyUsage()返回的布尔数组相同 null
        另请参见:
        getKeyUsage()
      • setExtendedKeyUsage

        public void setExtendedKeyUsage​(Set<String> keyPurposeSet)
                                 throws IOException
        设置extendedKeyUsage标准。 X509Certificate必须在其扩展密钥用法扩展中允许指定的密钥用途。 如果keyPurposeSet为空或null ,则不会执行extendedKeyUsage检查。 请注意,没有extendedKeyUsage扩展的X509Certificate隐式允许所有关键用途。

        请注意,克隆了Set以防止后续修改。

        参数
        keyPurposeSet -一个Set以字符串格式关键目的的OID(或null )。 每个OID由一组由句点分隔的非负整数表示。
        异常
        IOException - 如果OID无效,例如第一个组件不是0,1或2,或者第二个组件大于39。
        另请参见:
        getExtendedKeyUsage()
      • setMatchAllSubjectAltNames

        public void setMatchAllSubjectAltNames​(boolean matchAllNames)
        启用/禁用匹配setSubjectAlternativeNamesaddSubjectAlternativeName方法中指定的所有subjectAlternativeNames 如果启用, X509Certificate必须包含所有指定的主题备用名称。 如果禁用,则X509Certificate必须至少包含一个指定的主题备用名称。

        matchAllNames标志默认为true

        参数
        matchAllNames - 如果true ,则启用该标志; 如果false ,则禁用该标志。
        另请参见:
        getMatchAllSubjectAltNames()
      • setSubjectAlternativeNames

        public void setSubjectAlternativeNames​(Collection<List<?>> names)
                                        throws IOException
        设置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)

        注意:对于专有名称,请指定字节数组形式而不是String形式。 有关更多信息,请参阅addSubjectAlternativeName(int, String)的注释。

        需要注意的是names参数可以包含重复的名称(相同的名称和名称类型),但他们可以从被删除Collection通过返回的名字getSubjectAlternativeNames方法。

        请注意,在Collection上执行深层复制以防止后续修改。

        参数
        names - 名称中的 Collection (或 null
        异常
        IOException - 如果发生解析错误
        另请参见:
        getSubjectAlternativeNames()
      • addSubjectAlternativeName

        public void addSubjectAlternativeName​(int type,
                                              String name)
                                       throws IOException
        为subjectAlternativeNames标准添加名称。 X509Certificate必须包含所有或至少一个指定的SubjectAlternativeNames,具体取决于matchAllNames标志的值(请参阅setMatchAllSubjectAltNames )。

        此方法允许调用者将名称添加到主题备用名称集。 指定的名称将添加到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 - 名称类型(0-8,在RFC 5280中指定,第4.2.1.6节)
        name - 字符串形式的名称(不是 null
        异常
        IOException - 如果发生解析错误
      • addSubjectAlternativeName

        public void addSubjectAlternativeName​(int type,
                                              byte[] name)
                                       throws IOException
        为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

        public void setNameConstraints​(byte[] bytes)
                                throws IOException
        设置名称约束条件。 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 - 如果发生解析错误
        另请参见:
        getNameConstraints()
      • setBasicConstraints

        public void setBasicConstraints​(int minMaxPathLen)
        设置基本约束约束。 如果该值大于或等于零,则X509Certificates必须包含一个basicConstraints扩展,其pathLen至少为此值。 如果值为-2,则仅接受终端实体证书。 如果值为-1,则不进行检查。

        在构建证书路径时(从目标到信任锚),此约束非常有用。如果已构建部分路径,则任何候选证书的maxPathLen值必须大于或等于部分路径中的证书数。

        参数
        minMaxPathLen - 基本约束约束的值
        异常
        IllegalArgumentException - 如果该值小于-2
        另请参见:
        getBasicConstraints()
      • setPolicy

        public void setPolicy​(Set<String> certPolicySet)
                       throws IOException
        设置策略约束。 X509Certificate必须在其证书策略扩展中包含至少一个指定的策略。 如果certPolicySet为空,则X509Certificate必须在其证书策略扩展中至少包含一些指定的策略。 如果certPolicySetnull ,则不执行任何策略检查。

        请注意,克隆了Set以防止后续修改。

        参数
        certPolicySet - 一个Set的证书策略OID,以字符串格式(或null )。 每个OID由一组由句点分隔的非负整数表示。
        异常
        IOException - 如果OID上发生解析错误,例如第一个组件不是0,1或2,或者第二个组件大于39。
        另请参见:
        getPolicy()
      • setPathToNames

        public void setPathToNames​(Collection<List<?>> names)
                            throws IOException
        设置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)

        注意:对于专有名称,请指定字节数组形式而不是String形式。 有关详细信息,请参阅addPathToName(int, String)的注释。

        请注意, names参数可以包含重复的名称(相同的名称和名称类型),但可以从4319485480771方法返回的Collection中删除它们。

        请注意,在Collection上执行深层复制以防止后续修改。

        参数
        names - 每个名字有一个条目的 Collection (或 null
        异常
        IOException - 如果发生解析错误
        另请参见:
        getPathToNames()
      • addPathToName

        public void addPathToName​(int type,
                                  String name)
                           throws IOException
        为pathToNames标准添加名称。 X509Certificate不得包含禁止构建指定名称路径的名称约束。

        此方法允许调用者将名称添加到X509Certificates的名称约束必须允许的名称集。 指定的名称将添加到pathToNames标准的任何先前值。 如果名称是重复的,则可以忽略它。

        名称以字符串格式提供。 RFC 822,DNS和URI名称对这些类型使用完善的字符串格式(受RFC 5280中包含的限制)。 IPv4地址名称使用点分四位表示法提供。 OID地址名称表示为由句点分隔的一系列非负整数。 目录名称(专有名称)以RFC 2253格式提供。 没有为其他名称,X.400名称,EDI方名称,IPv6地址名称或任何其他类型的名称定义标准字符串格式。 应使用addPathToName(int type, byte [] name)方法指定它们。

        注意:对于专有名称,请改用addPathToName(int, byte[]) 不应该依赖此方法,因为它可能无法匹配某些证书,因为某些可分辨名称的RFC 2253字符串形式中的编码信息丢失。

        参数
        type - 名称类型(0-8,在RFC 5280中指定,第4.2.1.6节)
        name - 字符串形式的名称
        异常
        IOException - 如果发生解析错误
      • addPathToName

        public void addPathToName​(int type,
                                  byte[] name)
                           throws IOException
        为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 - 如果发生解析错误
      • getSerialNumber

        public BigInteger getSerialNumber()
        返回serialNumber标准。 指定的序列号必须与X509Certificate中的证书序列号匹配。 如果是null ,任何证书序列号都可以。
        结果
        要匹配的证书序列号(或 null
        另请参见:
        setSerialNumber(java.math.BigInteger)
      • getIssuer

        public X500Principal getIssuer()
        将颁发者标准返回为X500Principal 此专有名称必须与X509Certificate中的颁发者专有名称匹配。 如果是null ,则禁用颁发者标准,并且任何颁发者专有名称都将执行。
        结果
        所需的发行人专有名称为 null (或 null
        从以下版本开始:
        1.5
      • getIssuerAsString

        public String getIssuerAsString()
        删除 ,请改用getIssuer()getIssuerAsBytes() 不应该依赖此方法,因为它可能无法匹配某些证书,因为某些可分辨名称的RFC 2253字符串形式中的编码信息丢失。

        将颁发者标准返回为String 此专有名称必须与X509Certificate中的颁发者专有名称匹配。 如果是null ,则禁用颁发者标准,并且任何颁发者专有名称都将执行。

        如果返回的值不是null ,则它是RFC 2253格式的可分辨名称。

        结果
        RFC 2253格式(或 null )所需的颁发者专有名称
      • getIssuerAsBytes

        public byte[] getIssuerAsBytes()
                                throws IOException
        将发布者条件作为字节数组返回。 此专有名称必须与X509Certificate中的颁发者专有名称匹配。 如果是null ,则禁用颁发者标准,并且任何颁发者专有名称都将执行。

        如果返回的值不是null ,则它是一个包含单个DER编码可分辨名称的字节数组,如X.501中所定义。 该结构的ASN.1表示法在setIssuer(byte [] issuerDN)的文档中提供。

        请注意,克隆返回的字节数组以防止后续修改。

        结果
        包含ASN.1 DER格式(或 null )所需的颁发者专有名称的字节数组
        异常
        IOException - 如果发生编码错误
      • getSubject

        public X500Principal getSubject()
        将主题标准返回为X500Principal 此专有名称必须与X509Certificate中的主题专有名称匹配。 如果是null ,则禁用主题标准,并且将执行任何主题专有名称。
        结果
        所需的主题专有名称为 null (或 null
        从以下版本开始:
        1.5
      • getSubjectAsString

        public String getSubjectAsString()
        删除 ,请改用getSubject()getSubjectAsBytes() 不应该依赖此方法,因为它可能无法匹配某些证书,因为某些可分辨名称的RFC 2253字符串形式中的编码信息丢失。

        将主题标准返回为String 此专有名称必须与X509Certificate中的主题专有名称匹配。 如果是null ,则禁用主题标准并且将执行任何主题专有名称。

        如果返回的值不是null ,则它是RFC 2253格式的可分辨名称。

        结果
        RFC 2253格式(或 null )所需的主题专有名称
      • getSubjectAsBytes

        public byte[] getSubjectAsBytes()
                                 throws IOException
        以字节数组的形式返回主题标准。 此专有名称必须与X509Certificate中的主题专有名称匹配。 如果是null ,则禁用主题标准并且任何主题专有名称都将执行。

        如果返回的值不是null ,则它是一个包含单个DER编码可分辨名称的字节数组,如X.501中所定义。 该结构的ASN.1表示法在setSubject(byte [] subjectDN)的文档中提供。

        请注意,克隆返回的字节数组以防止后续修改。

        结果
        包含ASN.1 DER格式(或 null )中所需主题可分辨名称的字节数组
        异常
        IOException - 如果发生编码错误
      • getSubjectKeyIdentifier

        public byte[] getSubjectKeyIdentifier()
        返回subjectKeyIdentifier标准。 X509Certificate必须包含具有指定值的SubjectKeyIdentifier扩展。 如果是null ,则不会进行subjectKeyIdentifier检查。

        请注意,克隆返回的字节数组以防止后续修改。

        结果
        密钥标识符(或 null
        另请参见:
        setSubjectKeyIdentifier(byte[])
      • getAuthorityKeyIdentifier

        public byte[] getAuthorityKeyIdentifier()
        返回authorityKeyIdentifier标准。 X509Certificate必须包含具有指定值的AuthorityKeyIdentifier扩展。 如果是null ,则不会执行authorityKeyIdentifier检查。

        请注意,克隆返回的字节数组以防止后续修改。

        结果
        密钥标识符(或 null
        另请参见:
        setAuthorityKeyIdentifier(byte[])
      • getCertificateValid

        public Date getCertificateValid()
        返回certificateValid标准。 指定日期必须在X509Certificate的证书有效期内。 如果是null ,则不会进行certificateValid检查。

        请注意,克隆了返回的Date以防止后续修改。

        结果
        要检查的 Date (或 null
        另请参见:
        setCertificateValid(java.util.Date)
      • getPrivateKeyValid

        public Date getPrivateKeyValid()
        返回privateKeyValid标准。 指定日期必须在X509Certificate的私钥有效期内。 如果是null ,则不会进行privateKeyValid检查。

        请注意,克隆了返回的Date以防止后续修改。

        结果
        要检查的 Date (或 null
        另请参见:
        setPrivateKeyValid(java.util.Date)
      • getSubjectPublicKeyAlgID

        public String getSubjectPublicKeyAlgID()
        返回subjectPublicKeyAlgID标准。 X509Certificate必须包含具有指定算法的主题公钥。 如果是null ,则不会检查subjectPublicKeyAlgID。
        结果
        要检查的签名算法的对象标识符(OID)(或null )。 OID由一组以句点分隔的非负整数表示。
        另请参见:
        setSubjectPublicKeyAlgID(java.lang.String)
      • getSubjectPublicKey

        public PublicKey getSubjectPublicKey()
        返回subjectPublicKey标准。 X509Certificate必须包含指定的主题公钥。 如果是null ,则不会进行subjectPublicKey检查。
        结果
        要检查的主题公钥(或 null
        另请参见:
        setSubjectPublicKey(java.security.PublicKey)
      • getKeyUsage

        public boolean[] getKeyUsage()
        返回keyUsage标准。 X509Certificate必须允许指定的keyUsage值。 如果为null,则不会执行keyUsage检查。

        请注意,克隆返回的布尔数组以防止后续修改。

        结果
        一个布尔数组,格式与X509Certificate.getKeyUsage()返回的布尔数组相同 null
        另请参见:
        setKeyUsage(boolean[])
      • getExtendedKeyUsage

        public Set<String> getExtendedKeyUsage()
        返回extendedKeyUsage标准。 X509Certificate必须在其扩展密钥用法扩展中允许指定的密钥用途。 如果返回的keyPurposeSet为空或null ,则不会执行extendedKeyUsage检查。 请注意,没有extendedKeyUsage扩展的X509Certificate隐式允许所有关键用途。
        结果
        一个不可变的 Set字符串格式的关键目的OID(或 null
        另请参见:
        setExtendedKeyUsage(java.util.Set<java.lang.String>)
      • getMatchAllSubjectAltNames

        public boolean getMatchAllSubjectAltNames()
        指示X509Certificate必须包含setSubjectAlternativeNamesaddSubjectAlternativeName方法中指定的所有或至少一个subjectAlternativeNames 如果是true ,则X509Certificate必须包含所有指定的主题备用名称。 如果是false ,则X509Certificate必须至少包含一个指定的主题备用名称。
        结果
        true如果启用该标志; false如果禁用该标志。 该标志默认为true
        另请参见:
        setMatchAllSubjectAltNames(boolean)
      • getSubjectAlternativeNames

        public Collection<List<?>> 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
        另请参见:
        setSubjectAlternativeNames(java.util.Collection<java.util.List<?>>)
      • getNameConstraints

        public byte[] getNameConstraints()
        返回名称约束条件。 X509Certificate必须具有符合指定名称约束的主题和主题备用名称。

        名称约束作为字节数组返回。 此字节数组包含名称约束的DER编码形式,因为它们将出现在RFC 5280和X.509中定义的NameConstraints结构中。 该结构的ASN.1表示法在setNameConstraints(byte [] bytes)的文档中提供。

        请注意,克隆返回的字节数组以防止后续修改。

        结果
        包含NameConstraints扩展的ASN.1 DER编码的字节数组,用于检查名称约束。 null如果不执行名称约束检查。
        另请参见:
        setNameConstraints(byte[])
      • getBasicConstraints

        public int getBasicConstraints()
        返回基本约束约束。 如果该值大于或等于零,则X509Certificates必须包含basicConstraints扩展,其pathLen至少为此值。 如果值为-2,则仅接受终端实体证书。 如果值为-1,则不进行basicConstraints检查。
        结果
        基本约束约束的值
        另请参见:
        setBasicConstraints(int)
      • getPolicy

        public Set<String> getPolicy()
        返回策略标准。 X509Certificate必须在其证书策略扩展中包含至少一个指定的策略。 如果返回的Set为空,则X509Certificate必须在其证书策略扩展中至少包含一些指定的策略。 如果返回的Setnull ,则不会执行策略检查。
        结果
        不可变的 Set证书策略OID以字符串格式(或 null
        另请参见:
        setPolicy(java.util.Set<java.lang.String>)
      • getPathToNames

        public Collection<List<?>> 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上执行深层复制以防止后续修改。

        结果
        a Collection (或 null
        另请参见:
        setPathToNames(java.util.Collection<java.util.List<?>>)
      • toString

        public String toString()
        返回 CertSelector的可打印表示 CertSelector
        重写:
        toString在课程 Object
        结果
        一个 String所述的描述内容 CertSelector
      • match

        public boolean match​(Certificate cert)
        决定是否应选择 Certificate
        Specified by:
        match in interface CertSelector
        参数
        cert - 要检查的 Certificate
        结果
        true如果 Certificate应选择, false否则