- java.lang.Object
-
- java.security.cert.CRL
-
- java.security.cert.X509CRL
-
- All Implemented Interfaces:
-
X509Extension
public abstract class X509CRL extends CRL implements X509Extension
X.509证书撤销列表(CRL)的抽象类。 CRL是标识已撤销证书的时间戳列表。 它由证书颁发机构(CA)签署,并在公共存储库中免费提供。
每个撤销的证书都由其证书序列号在CRL中标识。 当证书使用系统使用证书(例如,用于验证远程用户的数字签名)时,该系统不仅可以检查证书签名和有效性,还可以获取适当最近的CRL,并检查证书序列号是否不在CRL。 “适当近期”的含义可能随当地政策而有所不同,但通常意味着最近发布的CRL。 CA定期定期发布新的CRL(例如,每小时,每天或每周)。 作为撤销,条目将添加到CRL中,并且在达到证书到期日期时可能会删除条目。
下面在ASN.1中介绍X.509 v2 CRL格式:
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
- 另请参见:
-
CRL
,CertificateFactory
,X509Extension
-
-
构造方法摘要
构造方法 Modifier Constructor 描述 protected
X509CRL()
X.509 CRL的构造方法。
-
方法摘要
所有方法 接口方法 抽象方法 具体的方法 Modifier and Type 方法 描述 boolean
equals(Object other)
将此CRL与给定对象进行比较。abstract byte[]
getEncoded()
返回此CRL的ASN.1 DER编码形式。abstract Principal
getIssuerDN()
诋毁 ,取而代之的是 getIssuerX500Principal() 。X500Principal
getIssuerX500Principal()
从CRL返回发行人(发行人可分辨名称)值为X500Principal
。abstract Date
getNextUpdate()
从CRL获取nextUpdate
日期。abstract X509CRLEntry
getRevokedCertificate(BigInteger serialNumber)
获取给定证书serialNumber的CRL条目(如果有)。X509CRLEntry
getRevokedCertificate(X509Certificate certificate)
获取给定证书的CRL条目(如果有)。abstract Set<? extends X509CRLEntry>
getRevokedCertificates()
获取此CRL中的所有条目。abstract String
getSigAlgName()
获取CRL签名算法的签名算法名称。abstract String
getSigAlgOID()
从CRL获取签名算法OID字符串。abstract byte[]
getSigAlgParams()
从该CRL的签名算法获取DER编码的签名算法参数。abstract byte[]
getSignature()
从CRL获取signature
值(原始签名位)。abstract byte[]
getTBSCertList()
获取DER编码的CRL信息,来自此CRL的tbsCertList
。abstract Date
getThisUpdate()
从CRL获取thisUpdate
日期。abstract int
getVersion()
从CRL获取version
(版本号)值。int
hashCode()
从其编码形式返回此CRL的哈希码值。abstract void
verify(PublicKey key)
验证此CRL是否使用与给定公钥对应的私钥进行签名。abstract void
verify(PublicKey key, String sigProvider)
验证此CRL是否使用与给定公钥对应的私钥进行签名。void
verify(PublicKey key, Provider sigProvider)
验证此CRL是否使用与给定公钥对应的私钥进行签名。-
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
-
Methods inherited from interface java.security.cert.X509Extension
getCriticalExtensionOIDs, getExtensionValue, getNonCriticalExtensionOIDs, hasUnsupportedCriticalExtension
-
-
-
-
方法详细信息
-
equals
public boolean equals(Object other)
将此CRL与给定对象进行比较。 如果other
对象是instanceof
X509CRL
,则其编码形式被检索并与该CRL的编码形式进行比较。- 重写:
-
equals
在Object
- 参数
-
other
- 测试与此CRL相等的对象。 - 结果
- 如果两个CRL的编码形式匹配,则为true,否则为false。
- 另请参见:
-
Object.hashCode()
,HashMap
-
hashCode
public int hashCode()
从其编码形式返回此CRL的哈希码值。- 重写:
-
hashCode
在Object
- 结果
- 哈希码值。
- 另请参见:
-
Object.equals(java.lang.Object)
,System.identityHashCode(java.lang.Object)
-
getEncoded
public abstract byte[] getEncoded() throws CRLException
返回此CRL的ASN.1 DER编码形式。- 结果
- 该证书的编码形式
- 异常
-
CRLException
- 如果发生编码错误。
-
verify
public abstract void verify(PublicKey key) throws CRLException, NoSuchAlgorithmException, InvalidKeyException, NoSuchProviderException, SignatureException
验证此CRL是否使用与给定公钥对应的私钥进行签名。- 参数
-
key
- 用于执行验证的PublicKey。 - 异常
-
NoSuchAlgorithmException
- 不支持的签名算法。 -
InvalidKeyException
- 键错误。 -
NoSuchProviderException
- 如果没有默认提供程序。 -
SignatureException
- 签名错误。 -
CRLException
- 编码错误。
-
verify
public abstract void verify(PublicKey key, String sigProvider) throws CRLException, NoSuchAlgorithmException, InvalidKeyException, NoSuchProviderException, SignatureException
验证此CRL是否使用与给定公钥对应的私钥进行签名。 此方法使用给定提供商提供的签名验证引擎。- 参数
-
key
- 用于执行验证的PublicKey。 -
sigProvider
- 签名提供者的名称。 - 异常
-
NoSuchAlgorithmException
- 不支持的签名算法。 -
InvalidKeyException
- 键错误。 -
NoSuchProviderException
- 错误提供者。 -
SignatureException
- 签名错误。 -
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
通常之一PrintableString
,TeletexString
或UniversalString
。- 结果
- 一位姓名为发行人名称的校长。
-
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
获取DER编码的CRL信息,来自此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字符串确定。- 结果
- 签名算法名称。
-
getSigAlgOID
public abstract String getSigAlgOID()
从CRL获取签名算法OID字符串。 OID由一组由周期分隔的非负整数表示。 例如,字符串“1.2.840.10040.4.3”标识了在RFC 3279: Algorithms and Identifiers for the Internet X.509 Public Key Infrastructure Certificate and CRL Profile中定义的具有DSA签名算法的SHA-1。有关ASN.1定义,请参见
getSigAlgName
。- 结果
- 签名算法OID字符串。
-
getSigAlgParams
public abstract byte[] getSigAlgParams()
从该CRL的签名算法获取DER编码的签名算法参数。 在大多数情况下,签名算法参数为null; 这些参数通常随公钥提供。 如果需要访问个别参数值,则使用AlgorithmParameters
与返回的名称进行实例化getSigAlgName
。有关ASN.1定义,请参见
getSigAlgName
。- 结果
- DER编码的签名算法参数,如果没有参数,则为null。
-
-