public abstract class X509CRL
extends CRL
implements X509Extension
java.lang.Object | ||
↳ | java.security.cert.CRL | |
↳ | java.security.cert.X509CRL |
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 3280: Internet X.509 Public Key Infrastructure Certificate and CRL Profile找到。
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的示例:
InputStream inStream = null;
try {
inStream = new FileInputStream("fileName-of-crl");
CertificateFactory cf = CertificateFactory.getInstance("X.509");
X509CRL crl = (X509CRL)cf.generateCRL(inStream);
} finally {
if (inStream != null) {
inStream.close();
}
}
也可以看看:
Protected constructors |
|
---|---|
X509CRL() X.509 CRL的构造函数。 |
Public methods |
|
---|---|
boolean |
equals(Object other) 比较此CRL与给定对象是否相等。 |
abstract byte[] |
getEncoded() 返回此CRL的ASN.1 DER编码形式。 |
abstract Principal |
getIssuerDN() 诋毁 ,取而代之的是 getIssuerX500Principal() 。 |
X500Principal |
getIssuerX500Principal() 以 |
abstract Date |
getNextUpdate() 获取CRL的 |
X509CRLEntry |
getRevokedCertificate(X509Certificate certificate) 获取给定证书的CRL条目(如果有的话)。 |
abstract X509CRLEntry |
getRevokedCertificate(BigInteger serialNumber) 获取具有给定证书serialNumber的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的 |
abstract byte[] |
getTBSCertList() 从此CRL获取DER编码的CRL信息,即 |
abstract Date |
getThisUpdate() 获取CRL的 |
abstract int |
getVersion() 获取CRL中的 |
int |
hashCode() 从其编码形式返回此CRL的哈希码值。 |
abstract void |
verify(PublicKey key) 验证此CRL是否使用与给定公钥对应的私钥进行签名。 |
abstract void |
verify(PublicKey key, String sigProvider) 验证此CRL是否使用与给定公钥对应的私钥进行签名。 |
Inherited methods |
|
---|---|
From class java.security.cert.CRL
|
|
From class java.lang.Object
|
|
From interface java.security.cert.X509Extension
|
boolean equals (Object other)
比较此CRL与给定对象是否相等。 如果other
对象是instanceof
X509CRL
,则检索其编码形式并与此CRL的编码形式进行比较。
Parameters | |
---|---|
other |
Object : the object to test for equality with this CRL. |
Returns | |
---|---|
boolean |
true iff the encoded forms of the two CRLs match, false otherwise. |
byte[] getEncoded ()
返回此CRL的ASN.1 DER编码形式。
Returns | |
---|---|
byte[] |
the encoded form of this certificate |
Throws | |
---|---|
CRLException |
if an encoding error occurs. |
Principal getIssuerDN ()
贬低 ,由getIssuerX500Principal()取代。 此方法返回issuer
作为实现特定的主体对象,这不应该由可移植代码来依赖。
从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 ::= ANYThe
Name
describes a hierarchical name composed of attributes, such as country name, and corresponding values, such as US. The type of the
AttributeValue
component is determined by the
AttributeType
; in general it will be a
directoryString
. A
directoryString
is usually one of
PrintableString
,
TeletexString
or
UniversalString
.
Returns | |
---|---|
Principal |
a Principal whose name is the issuer distinguished name. |
X500Principal getIssuerX500Principal ()
从CRL中返回发行人(发行人专有名称)值 X500Principal
。
建议子类重写此方法。
Returns | |
---|---|
X500Principal |
an X500Principal representing the issuer distinguished name |
Date getNextUpdate ()
从CRL获取 nextUpdate
日期。
Returns | |
---|---|
Date |
the nextUpdate date from the CRL, or null if not present. |
X509CRLEntry getRevokedCertificate (X509Certificate certificate)
获取给定证书的CRL条目(如果有的话)。
此方法可用于查找间接CRL中的CRL条目,这意味着包含来自CRL发行者以外的发行者的条目的CRL。 默认实现将仅返回由CRL发布者发布的证书的条目。 希望支持间接CRL的子类应该重写此方法。
Parameters | |
---|---|
certificate |
X509Certificate : the certificate for which a CRL entry is to be looked up |
Returns | |
---|---|
X509CRLEntry |
the entry for the given certificate, or null if no such entry exists in this CRL. |
Throws | |
---|---|
NullPointerException |
if certificate is null |
X509CRLEntry getRevokedCertificate (BigInteger serialNumber)
获取具有给定证书serialNumber的CRL条目(如果有)。
Parameters | |
---|---|
serialNumber |
BigInteger : the serial number of the certificate for which a CRL entry is to be looked up |
Returns | |
---|---|
X509CRLEntry |
the entry with the given serial number, or null if no such entry exists in this CRL. |
也可以看看:
Set<? extends X509CRLEntry> getRevokedCertificates ()
获取此CRL的所有条目。 这会返回一组X509CRLEntry对象。
Returns | |
---|---|
Set<? extends X509CRLEntry> |
all the entries or null if there are none present. |
也可以看看:
String getSigAlgName ()
获取CRL签名算法的签名算法名称。 一个例子是字符串“SHA256withRSA”。 ASN.1对此的定义是:
signatureAlgorithm AlgorithmIdentifierAlgorithmIdentifier :: = SEQUENCE {algorithm OBJECT IDENTIFIER,参数ANY DEFINED BY algorithm OPTIONAL} - 包含一个类型值 - 注册用于 - 算法对象标识符值
算法名称由 algorithm
OID字符串确定。
Returns | |
---|---|
String |
the signature algorithm name. |
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
。
Returns | |
---|---|
String |
the signature algorithm OID string. |
byte[] getSigAlgParams ()
从此CRL的签名算法中获取DER编码的签名算法参数。 在大多数情况下,签名算法参数为空; 参数通常由公钥提供。 如果需要访问单个参数值,则使用AlgorithmParameters
并使用由getSigAlgName
返回的名称进行实例化。
相关ASN.1定义见 getSigAlgName
。
Returns | |
---|---|
byte[] |
the DER-encoded signature algorithm parameters, or null if no parameters are present. |
byte[] getSignature ()
获取来自CRL的signature
值(原始签名位)。 ASN.1对此的定义是:
signature BIT STRING
Returns | |
---|---|
byte[] |
the signature. |
byte[] getTBSCertList ()
从此CRL获取DER编码的CRL信息, tbsCertList
。 这可以用来独立验证签名。
Returns | |
---|---|
byte[] |
the DER-encoded CRL information. |
Throws | |
---|---|
CRLException |
if an encoding error occurs. |
Date getThisUpdate ()
从CRL获取thisUpdate
日期。 ASN.1对此的定义是:
thisUpdate ChoiceOfTime ChoiceOfTime ::= CHOICE { utcTime UTCTime, generalTime GeneralizedTime }
Returns | |
---|---|
Date |
the thisUpdate date from the CRL. |
int getVersion ()
获取CRL中的version
(版本号)值。 ASN.1对此的定义是:
version Version OPTIONAL, -- if present, must be v2Version :: = INTEGER {v1(0),v2(1),v3(2)} - v3不适用于CRL,但出于一致性 - 定义了Version for certs
Returns | |
---|---|
int |
the version number, i.e. 1 or 2. |
void verify (PublicKey key)
验证此CRL是否使用与给定公钥对应的私钥进行签名。
Parameters | |
---|---|
key |
PublicKey : the PublicKey used to carry out the verification. |
Throws | |
---|---|
NoSuchAlgorithmException |
on unsupported signature algorithms. |
InvalidKeyException |
on incorrect key. |
NoSuchProviderException |
if there's no default provider. |
SignatureException |
on signature errors. |
CRLException |
on encoding errors. |
void verify (PublicKey key, String sigProvider)
验证此CRL是否使用与给定公钥对应的私钥进行签名。 此方法使用由给定提供者提供的签名验证引擎。
Parameters | |
---|---|
key |
PublicKey : the PublicKey used to carry out the verification. |
sigProvider |
String : the name of the signature provider. |
Throws | |
---|---|
NoSuchAlgorithmException |
on unsupported signature algorithms. |
InvalidKeyException |
on incorrect key. |
NoSuchProviderException |
on incorrect provider. |
SignatureException |
on signature errors. |
CRLException |
on encoding errors. |