在 Java 中获取签名验证的证书吊销时间



我需要获取撤销日期,只是将其与签名验证框架中的签名时间进行比较。下一个代码,使用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/security/provider/certpath/ocsppath/ocsp.java.java.html

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

params.setDate(signingDate)

此时检查证书的有效性

最新更新