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

Class X509CRL

  • 实现的所有接口
    X509Extension

    public abstract class X509CRL
    extends CRL
    implements X509Extension

    X.509证书吊销列表(CRL)的抽象类。 CRL是标识已撤销证书的带时间戳的列表。 它由证书颁发机构(CA)签名,并在公共存储库中免费提供。

    每个撤销的证书都通过其证书序列号在CRL中标识。 当使用证书的系统使用证书(例如,用于验证远程用户的数字签名)时,该系统不仅检查证书签名和有效性,还获取适当的最新CRL并检查证书序列号是否在CRL。 “适当近期”的含义可能因当地政策而异,但通常意味着最近发布的CRL。 CA定期(例如,每小时,每天或每周)发布新的CRL。 在发生撤销时,条目将添加到CRL,并且在达到证书到期日期时可能会删除条目。

    X.509 v2 CRL格式在ASN.1中描述如下:

      CertificateList  ::=  SEQUENCE  {
         tbsCertList          TBSCertList,
         signatureAlgorithm   AlgorithmIdentifier,
         signature            BIT STRING  } 

    更多信息,请参阅RFC 5280: Internet X.509 Public Key Infrastructure Certificate and CRL Profile

    tbsCertList的ASN.1定义是:

      TBSCertList  ::=  SEQUENCE  {
         version                 Version OPTIONAL,
                                 -- if present, must be v2
         signature               AlgorithmIdentifier,
         issuer                  Name,
         thisUpdate              ChoiceOfTime,
         nextUpdate              ChoiceOfTime OPTIONAL,
         revokedCertificates     SEQUENCE OF SEQUENCE  {
             userCertificate         CertificateSerialNumber,
             revocationDate          ChoiceOfTime,
             crlEntryExtensions      Extensions OPTIONAL
                                     -- if present, must be v2
             }  OPTIONAL,
         crlExtensions           [0]  EXPLICIT Extensions OPTIONAL
                                      -- if present, must be v2
         } 

    CRL使用证书工厂进行实例化。 以下是如何实例化X.509 CRL的示例:

       try (InputStream inStream = new FileInputStream("fileName-of-crl")) { CertificateFactory cf = CertificateFactory.getInstance("X.509"); X509CRL crl = (X509CRL)cf.generateCRL(inStream); }  
    从以下版本开始:
    1.2
    另请参见:
    CRLCertificateFactoryX509Extension
    • 构造方法详细信息

      • X509CRL

        protected X509CRL()
        X.509 CRL的构造函数。
    • 方法详细信息

      • equals

        public boolean equals​(Object other)
        将此CRL与给定对象进行相等性比较。 如果other对象是instanceof X509CRL ,则检索其编码形式并与该CRL的编码形式进行比较。
        重写:
        equals在课程 Object
        参数
        other - 要测试与此CRL是否相等的对象。
        结果
        如果两个CRL的编码形式匹配,则为true,否则为false。
        另请参见:
        Object.hashCode()HashMap
      • getEncoded

        public abstract byte[] getEncoded()
                                   throws CRLException
        返回此CRL的ASN.1 DER编码形式。
        结果
        此证书的编码形式
        异常
        CRLException - 如果发生编码错误。
      • verify

        public void verify​(PublicKey key,
                           Provider sigProvider)
                    throws CRLException,
                           NoSuchAlgorithmException,
                           InvalidKeyException,
                           SignatureException
        验证是否使用与给定公钥对应的私钥对此CRL进行了签名。 此方法使用给定提供程序提供的签名验证引擎。 请注意,指定的Provider对象不必在提供程序列表中注册。 此方法已添加到Java Platform Standard Edition的1.8版中。 为了保持与现有服务提供程序的向后兼容性,此方法不是abstract ,它提供了默认实现。
        参数
        key - 用于执行验证的PublicKey。
        sigProvider - 签名提供者。
        异常
        NoSuchAlgorithmException - 关于不支持的签名算法。
        InvalidKeyException - 关于错误的密钥。
        SignatureException - 关于签名错误。
        CRLException - 关于编码错误。
        从以下版本开始:
        1.8
      • getVersion

        public abstract int getVersion()
        从CRL获取version (版本号)值。 ASN.1的定义是:
          version    Version OPTIONAL,
                     -- if present, must be v2
        
         Version  ::=  INTEGER  {  v1(0), v2(1), v3(2)  }
                     -- v3 does not apply to CRLs but appears for consistency
                     -- with definition of Version for certs 
        结果
        版本号,即1或2。
      • getIssuerDN

        public abstract Principal getIssuerDN()
        诋毁 ,取而代之的是getIssuerX500Principal() 此方法返回issuer作为特定于实现的Principal对象,便携式代码不应依赖该对象。

        从CRL获取issuer (颁发者专有名称)值。 颁发者名称标识签署(和颁发)CRL的实体。

        颁发者名称字段包含X.500可分辨名称(DN)。 ASN.1的定义是:

          issuer    Name
        
         Name ::= CHOICE { RDNSequence }
         RDNSequence ::= SEQUENCE OF RelativeDistinguishedName
         RelativeDistinguishedName ::=
             SET OF AttributeValueAssertion
        
         AttributeValueAssertion ::= SEQUENCE {
                                       AttributeType,
                                       AttributeValue }
         AttributeType ::= OBJECT IDENTIFIER
         AttributeValue ::= ANY 
        Name描述了由属性组成的分层名称,例如国家名称和相应的值,例如US。 的类型的AttributeValue分量由确定AttributeType ; 一般情况下,它将是directoryString directoryString通常之一PrintableStringTeletexStringUniversalString
        结果
        名称为发行人专有名称的委托人。
      • getIssuerX500Principal

        public X500Principal getIssuerX500Principal()
        从CRL返回颁发者(颁发者专有名称)值X500Principal

        建议子类重写此方法。

        结果
        X500Principal代表发行人的专有名称
        从以下版本开始:
        1.4
      • getThisUpdate

        public abstract Date getThisUpdate()
        从CRL获取thisUpdate日期。 ASN.1的定义是:
          thisUpdate   ChoiceOfTime
         ChoiceOfTime ::= CHOICE {
             utcTime        UTCTime,
             generalTime    GeneralizedTime } 
        结果
        来自CRL的 thisUpdate日期。
      • getNextUpdate

        public abstract Date getNextUpdate()
        从CRL获取 nextUpdate日期。
        结果
        来自CRL的 nextUpdate日期,如果不存在则为null。
      • getRevokedCertificate

        public abstract X509CRLEntry getRevokedCertificate​(BigInteger serialNumber)
        获取具有给定证书serialNumber的CRL条目(如果有)。
        参数
        serialNumber - 要查找CRL条目的证书的序列号
        结果
        具有给定序列号的条目,如果此CRL中不存在此类条目,则返回null。
        另请参见:
        X509CRLEntry
      • getRevokedCertificate

        public X509CRLEntry getRevokedCertificate​(X509Certificate certificate)
        获取给定证书的CRL条目(如果有)。

        此方法可用于在间接CRL中查找CRL条目,这意味着包含来自CRL颁发者以外的颁发者的条目的CRL。 默认实现仅返回CRL颁发者颁发的证书的条目。 希望支持间接CRL的子类应覆盖此方法。

        参数
        certificate - 要查找CRL条目的证书
        结果
        给定证书的条目,如果此CRL中不存在此类条目,则返回null。
        异常
        NullPointerException - 如果证书为空
        从以下版本开始:
        1.5
      • getRevokedCertificates

        public abstract Set<? extends X509CRLEntry> getRevokedCertificates()
        获取此CRL中的所有条目。 这将返回一组X509CRLEntry对象。
        结果
        所有条目,如果没有,则返回null。
        另请参见:
        X509CRLEntry
      • getTBSCertList

        public abstract byte[] getTBSCertList()
                                       throws CRLException
        从此CRL获取DER编码的CRL信息tbsCertList 这可以用于独立验证签名。
        结果
        DER编码的CRL信息。
        异常
        CRLException - 如果发生编码错误。
      • getSignature

        public abstract byte[] getSignature()
        从CRL获取signature值(原始签名位)。 ASN.1的定义是:
          signature     BIT STRING 
        结果
        签名。
      • getSigAlgName

        public abstract String getSigAlgName()
        获取CRL签名算法的签名算法名称。 一个例子是字符串“SHA256withRSA”。 ASN.1的定义是:
          signatureAlgorithm   AlgorithmIdentifier
        
         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 

        算法名称由algorithm OID字符串确定。

        结果
        签名算法名称。
      • getSigAlgParams

        public abstract byte[] getSigAlgParams()
        从此CRL的签名算法中获取DER编码的签名算法参数。 在大多数情况下,签名算法参数为空; 参数通常由公钥提供。 如果需要访问个别参数值,则使用AlgorithmParameters并与返回的名称进行实例化getSigAlgName

        有关ASN.1定义,请参见getSigAlgName

        结果
        DER编码的签名算法参数,如果不存在参数,则为null。