Java X509证书颁发者验证

标签 java x509certificate xml-dsig

我正在使用 X509Certificates 实现通信,并且正在努力验证证书。

我已经获得了一个自签名的“父”证书,并用于签署所有其他证书。

这已经完成,我已经获得了证书。

下一步,另一部分是签署我的证书,然后我将存储它们。

这是第一个问题: 返回的证书与我创建的证书不对应,因此公钥不同。 现在如何使用签名的证书更新我的 keystore ?因此,我需要证书中的私钥,但我需要返回证书中的签名版本。

下一个问题: 签名的证书需要根据父证书进行验证和检查,但执行此操作时,如下所示:

X509Certificate parent;
X509Certificate certToVerify;
parent.verify(certToVerify.getPublicKey());

它抛出,签名错误,java.security.SignatureException:签名不匹配。

还有其他方法可以检查颁发者或验证证书吗? 有什么我错过的吗?

最好的, 亨里克

最佳答案

对于您的第一个问题,您应该取回签名证书以响应证书签名请求 (CSR)。例如,您生成了私钥,然后创建了 CSR。您将该 CSR(包含您的公钥)发送给证书颁发机构 (CA)。 CA 验证您的身份并向您返回签名证书。此签名证书应包含与您的 CSR 中相同的公钥。您可以获取签名的证书并将其导入到您的 keystore 中。如果您已经拥有该私钥的自签名证书,则导入的签名证书应替换它。

对于第二个问题,您需要改变陈述。您需要使用父级的公钥验证签名的证书。

X509Certificate parent = ...;
X509Certificate certToVerify = ...;
certToVerify.verify(parent.getPublicKey());

关于Java X509证书颁发者验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18585222/

相关文章:

java - 在 Matisse 中更改组件的类型

wcf - 当我有证书身份时,如何在代码中创建端点地址?

ssl - tinyca搬家了吗?私有(private) CA 还有什么用?

XML 数字签名 : How is the digest value calculated for same-document reference URIs?

java - 类字段的初始化

java将对象保存在CPU寄存器中

node.js - 如何更改规范化方法

java - 实例化类的正确方法,以便我能够验证证书中的路径链

java - 如果在 "sleep"期间发生完整 GC,Thread.sleep 将如何表现?

java - 从 Android 中的 x.509 证书中获取 CA 详细信息