- java.lang.Object
-
- java.security.cert.CRL
-
- java.security.cert.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
- 另请参见:
-
CRL
,CertificateFactory
,X509Extension
-
-
构造方法摘要
构造方法 变量 构造器 描述 protected
X509CRL()
X.509 CRL的构造函数。
-
方法摘要
所有方法 实例方法 抽象方法 具体的方法 变量和类型 方法 描述 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()
从此CRL获取DER编码的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进行了签名。-
声明方法的接口 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
in classObject
- 结果
- 哈希码值。
- 另请参见:
-
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
从此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字符串确定。- 结果
- 签名算法名称。
-
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编码的签名算法参数。 在大多数情况下,签名算法参数为空; 参数通常由公钥提供。 如果需要访问个别参数值,则使用AlgorithmParameters
并与返回的名称进行实例化getSigAlgName
。有关ASN.1定义,请参见
getSigAlgName
。- 结果
- DER编码的签名算法参数,如果不存在参数,则为null。
-
-