逻辑开始方法 (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()
中放置一个断点并从那里开始检查。
只是想知道是否有人知道 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()
中放置一个断点并从那里开始检查。