【问题标题】:Get certificate's revocation time for signature validation in Java获取证书的撤销时间以在 Java 中进行签名验证
【发布时间】:2019-04-10 18:56:21
【问题描述】:

我需要获取吊销日期只是为了将其与签名验证框架中的签名时间进行比较。下一个代码,使用 CertPathValidator java 类,允许我验证证书链,但如果链中有任何证书被撤销,它会抛出异常。

private boolean validateChain(List<X509Certificate> certificates) {
 PKIXParameters params;
 CertPath certPath;
 CertPathValidator certPathValidator;
 Boolean valid = Boolean.FALSE;

 params = new PKIXParameters(keyStore);
 params.setRevocationEnabled(true);
 Security.setProperty("ocsp.enable", "true");

 certPath = cf.generateCertPath(certificates);
 certPathValidator = CertPathValidator.getInstance("PKIX");

 PKIXCertPathValidatorResult result = (PKIXCertPathValidatorResult)  
 certPathValidator.validate(certPath, params);

 if(null != result) {
    valid = Boolean.TRUE;
 }
 return valid;
}

我需要一些方法来检查链中是否有一些证书被吊销,而不会引发异常并停止验证过程。此外,我需要获得撤销日期,因为最后的代码不允许这样做。 我需要一个非专有的解决方案,因为我已经知道 Sun 类 OCSP http://www.docjar.com/html/api/sun/security/provider/certpath/OCSP.java.html

【问题讨论】:

标签: java certificate signature


【解决方案1】:

最后我找到了解决方法。可以确定路径的有效性应该被确定为参数的日期。我无法恢复每个证书的吊销日期,但添加以下行:

params.setDate(signingDate)

此时检查CertPath的有效性

【讨论】:

    猜你喜欢
    • 2013-05-01
    • 2012-09-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多