我如何检查证书 A 是否在 Java 中获得证书 B 作为颁发者? --> X509Certificates
How do i check if certificate A got certfiicate B as issuer in Java? --> X509Certificates
我有两个X509Certificates,其中一个已上传,另一个应该是Issuer。检查给定证书是否是上传证书的颁发者的最简单方法是什么?
这应该用 Java.
来完成
您需要验证两点:
- 上传的证书颁发者DN等于颁发者证书主题DN.
- 上传的证书已由颁发者证书私钥签名。
可以使用此 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;
}
为了清晰和简洁的原因,我在该代码示例中添加了 捕获所有异常。请注意,这可能会导致漏报(即 returns 错误,即使上传的证书已由颁发者证书颁发)例如,当任何已安装的加密提供程序不支持签名算法时。
我有两个X509Certificates,其中一个已上传,另一个应该是Issuer。检查给定证书是否是上传证书的颁发者的最简单方法是什么? 这应该用 Java.
来完成您需要验证两点:
- 上传的证书颁发者DN等于颁发者证书主题DN.
- 上传的证书已由颁发者证书私钥签名。
可以使用此 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;
}
为了清晰和简洁的原因,我在该代码示例中添加了 捕获所有异常。请注意,这可能会导致漏报(即 returns 错误,即使上传的证书已由颁发者证书颁发)例如,当任何已安装的加密提供程序不支持签名算法时。