【问题标题】:Logic begin method (java.security.cert.X509CRL) isRevoked逻辑开始方法 (java.security.cert.X509CRL) isRevoked
【发布时间】:2015-08-07 16:58:30
【问题描述】:

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

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 并检查我在数据库中拥有的证书是否被吊销,然后将它们标记为已吊销。

提前致谢。

【问题讨论】:

    标签: java security ssl x509


    【解决方案1】:

    您需要检查源代码/反编译代码,因为该区域的 Java Docs 很可笑,并且行为是特定于实现的

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

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

    【讨论】:

    • “在 crl.isRevoked 中放置断点并从那里开始检查”是什么意思?一旦我需要撤销证书并传递给“isRevoked”,就很难测试这个逻辑。我可以在互联网上找到某个 CRL 的一些已撤销证书进行测试。
    • 是的。威瑞信有一个test site with a revoked certificate。您只需要从浏览器中导出证书即可。
    • 链接失效 :-( 试图找到另一个
    猜你喜欢
    • 1970-01-01
    • 2021-01-20
    • 1970-01-01
    • 1970-01-01
    • 2014-06-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-21
    相关资源
    最近更新 更多