在X509CRL列表中搜索



我有一个X509 CRL的列表。我需要以某种方式识别其中的一些。现在我使用发卡机构:

for(var crl: List<X509CRL> crls){
String issuer = c.getIssuerX500Principal().getName();
if(issuer.contains("searchString"))
result.add(crl);
}

但必须有一种更好的方法来使用CRL文件格式的知识,也许可以比较公钥或类似的东西,但我对X509CRL不太了解。有人能帮我吗?

如果您有权访问每个证书的公钥,则可以使用verify(PublicKey key)方法验证CRL是否使用与给定公钥相对应的私钥进行了签名。

如果密钥不正确,它应该抛出一个InvalidKeyException,所以用一个try-catch块围绕它,如下所示:

try {
crl.verify(<public_key>)
} catch(InvalidKeyException e) {
// handle exception
}

另请参阅:

  • 类X509CRL-验证

与@Pexers的解决方案类似,使用X509证书或X509证书序列号列表,并在循环中调用其中任何一个;

X509CRLEntry getRevokedCertificate(BigInteger serialNumber)

X509CRLEntry getRevokedCertificate(X509Certificate certificate)

如果它们在CRL中,结果将是X509CRLEntry;如果它们不在,结果将为null。

以这种方式处理大量的证书和/或CRL将减少捕获和处理每个证书和(或(CRL的异常的需要。

相关内容

  • 没有找到相关文章