1

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

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

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

在下一步中,另一部分是签署我的证书并存储它们。

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

下一个问题:签名证书需要根据父证书进行验证和检查,但是这样做时,如下所示:

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

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

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

最好的,亨里克

4

1 回答 1

2

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

对于您的第二个问题,您需要切换语句。您需要使用父级的公钥验证签名证书。

X509Certificate parent = ...;
X509Certificate certToVerify = ...;
certToVerify.verify(parent.getPublicKey());
于 2013-09-03T22:39:38.053 回答