我有两个X509Certificates,其中一个上传,另一个应该是发行人。检查给定证书是否为上载证书的颁发者的最简单方法是什么? 这应该用Java来完成。
答案 0 :(得分:2)
您需要验证两点:
可以使用此java代码段
来完成public boolean check(X509Certificate issuer, X509Certificate uploaded) {
Principal subjectDN = issuer.getSubjectDN();
Principal issuerDN = uploaded.getIssuerDN();
if (!subjectDN.equals(issuerDN)) {
return false;
}
PublicKey pubKey = issuer.getPublicKey();
try {
uploaded.verify(pubKey);
} catch (Exception e) {
return false;
}
return true;
}
为了清晰和简洁的原因,我在该代码示例中添加了捕获所有异常。请注意,这可能会导致误报(即,即使上传的证书已由颁发者证书颁发,也会返回false),例如,当任何已安装的加密提供程序不支持签名算法时。