逻辑开始方法 (java.security.cert.X509CRL) isRevoked

Logic begin method (java.security.cert.X509CRL) isRevoked

只是想知道是否有人知道 isRevoked from X509CRL 方法背后的逻辑是什么 class。

Java documentation 中只是说此方法验证作为参数传递的证书对象是否在列表中,但没有说明它比较哪些字段(序列号、颁发者 DN 等)。

Certificate cert = CertificateFactory.getInstance("X.509").generateCertificate(new ByteArrayInputStream(rs.getString("x509_certificate").getBytes("utf-8")));      

CertificateFactory certFactory = CertificateFactory.getInstance("X.509"); 
URL crlURL = new URL("http://www.certificadodigital.com.br/repositorio/lcr/serasarfbv2.crl");
InputStream crlStream = crlURL.openStream();
X509CRL crl = (X509CRL) certFactory.generateCRL(crlStream);        
System.out.println(crl.getIssuerDN());      


if (crl.isRevoked(cert) {
  System.out.println("revoked");
}                              

基本上我想做的是创建一个批处理作业来加载一些 CRL 并检查我数据库中的证书是否被撤销,然后将它们标记为已撤销。

提前致谢。

您需要检查 source/decompiled 代码,因为该区域的 Java Docs 很有趣,并且 行为是特定于实现的 .

在 Oracle VM 中,CRL 对象检查序列号和 X500Name 是否相同...现在 Voodoo 发生在 X500Name.equals() 内部,因为它根据所有来自 CRL 和证书的名称属性。

抱歉,我不能说得更具体。我的建议是:调试代码并在 CRL.isRevoked() 中放置一个断点并从那里开始检查。