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 3280: Internet X.509 Public Key Infrastructure Certificate and CRL Profile 。
tbsCertList的ASN.1 tbsCertList
是:
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); }
CRL
, CertificateFactory
, X509Extension
Modifier | Constructor and Description |
---|---|
protected |
X509CRL()
X.509 CRL的构造方法。
|
Modifier and Type | Method and Description |
---|---|
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是否使用与给定公钥对应的私钥进行签名。
|
void |
verify(PublicKey key, Provider sigProvider)
验证此CRL是否使用与给定公钥对应的私钥进行签名。
|
abstract void |
verify(PublicKey key, String sigProvider)
验证此CRL是否使用与给定公钥对应的私钥进行签名。
|
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
getCriticalExtensionOIDs, getExtensionValue, getNonCriticalExtensionOIDs, hasUnsupportedCriticalExtension
public boolean equals(Object other)
other
对象是instanceof
X509CRL
,则其编码形式被检索并与该CRL的编码形式进行比较。
equals
在
Object
other
- 用于测试与此CRL相等的对象。
Object.hashCode()
, HashMap
public int hashCode()
hashCode
在
Object
Object.equals(java.lang.Object)
,
System.identityHashCode(java.lang.Object)
public abstract byte[] getEncoded() throws CRLException
CRLException
- 如果发生编码错误。
public abstract void verify(PublicKey key) throws CRLException, NoSuchAlgorithmException, InvalidKeyException, NoSuchProviderException, SignatureException
key
- 用于执行验证的PublicKey。
NoSuchAlgorithmException
- 关于不支持的签名算法。
InvalidKeyException
- 键错误。
NoSuchProviderException
- 如果没有默认提供程序。
SignatureException
- 签名错误。
CRLException
- 编码错误。
public abstract void verify(PublicKey key, String sigProvider) throws CRLException, NoSuchAlgorithmException, InvalidKeyException, NoSuchProviderException, SignatureException
key
- 用于执行验证的PublicKey。
sigProvider
- 签名提供者的名称。
NoSuchAlgorithmException
- 不支持的签名算法。
InvalidKeyException
- 键错误。
NoSuchProviderException
- 不正确的提供商。
SignatureException
- 签名错误。
CRLException
- 编码错误。
public void verify(PublicKey key, Provider sigProvider) throws CRLException, NoSuchAlgorithmException, InvalidKeyException, SignatureException
abstract
,它提供了默认的实现。
key
- 用于执行验证的PublicKey。
sigProvider
- 签名提供者。
NoSuchAlgorithmException
- 不支持的签名算法。
InvalidKeyException
- 键错误。
SignatureException
- 签名错误。
CRLException
- 编码错误。
public abstract int getVersion()
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
public abstract Principal getIssuerDN()
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
。
public X500Principal getIssuerX500Principal()
X500Principal
。
建议子类覆盖此方法。
X500Principal
代表发行人的可分辨名称
public abstract Date getThisUpdate()
thisUpdate
日期。
ASN.1的定义是:
thisUpdate ChoiceOfTime
ChoiceOfTime ::= CHOICE {
utcTime UTCTime,
generalTime GeneralizedTime }
thisUpdate
日期。
public abstract Date getNextUpdate()
nextUpdate
日期。
nextUpdate
日期,如果不存在,则为null。
public abstract X509CRLEntry getRevokedCertificate(BigInteger serialNumber)
serialNumber
- 要查找CRL条目的证书的序列号
X509CRLEntry
public X509CRLEntry getRevokedCertificate(X509Certificate certificate)
该方法可用于查找间接CRL中的CRL条目,这意味着CRL包含来自除CRL颁发者之外的发行人的条目。 默认实现只会返回由CRL颁发者颁发的证书的条目。 希望支持间接CRL的子类应该覆盖此方法。
certificate
- 要查找CRL条目的证书
NullPointerException
- 如果证书为空
public abstract Set<? extends X509CRLEntry> getRevokedCertificates()
X509CRLEntry
public abstract byte[] getTBSCertList() throws CRLException
tbsCertList
。
这可以独立地用于验证签名。
CRLException
- 如果发生编码错误。
public abstract byte[] getSignature()
signature
值(原始签名位)。
ASN.1的定义是:
signature BIT STRING
public abstract String getSigAlgName()
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字符串确定。
public abstract String getSigAlgOID()
见getSigAlgName
对相关的ASN.1定义。
public abstract byte[] getSigAlgParams()
AlgorithmParameters
并使用getSigAlgName
返回的名称实例化 。
见getSigAlgName
对相关的ASN.1定义。