ssl - 更新别名下的其中一个证书

标签 ssl certificate keystore keytool

我试图通过保持与以前相同的别名来更新服务器端 keystore 中的证书,在这个别名下实际上有 3 个不同的证书,我只想更新其中一个。

他们就像:

Alias name: alias
Creation date: 
Certificate chain length: 3
Certificate[1]:
Owner:......
...
Certificate[2]:
...

我首先尝试了这个:

keytool -import -trustcacerts -alias <same_as_before> -file new.cer -keystore <same_as_before>.jks

但得到异常:

keytool error: java.lang.Exception: Failed to establish chain from reply

然后我使用以下方法删除了旧别名:

keytool -delete -alias <same_as_before> -keystore <same_as_before> 

然后重新导入。这次成功了,但两个证书也被删除了。 我也尝试直接导入(不删除)但使用新的别名并且它确实有效,但我不确定服务器的行为 whtn 旧证书的到期日期,因为这就是我需要更新它的原因。有什么建议吗?

最佳答案

问题解决了。问题是我们不能只更新链中的一个证书。在我的例子中,三个链式证书是我将使用的证书、根 CA 和与该证书关联的中间 CA。

我所做的是从更新的证书中导出根 CA 和中间 CA 证书,并使用 keytool 以根 -> 中间 -> 更新的顺序导入它们。然后查看.jks文件内容,对应的证书已经更新。

关于ssl - 更新别名下的其中一个证书,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45081859/

相关文章:

ssl - IHS - 仅对某些页面进行 SSL 相互认证

java - 协同设计的应用程序仍然不受信任

ssl - RapidSSL 到 AWS 证书管理器

ssl - 没有用于 MQ channel 的 SSL 或 TLS 证书(从终端运行 - Windows 10)

java - KeyStore 不为带有 BouncyCaSTLe 的 Android 中的 PKCS12 文件应用/强制执行私钥密码

java - 使用 SSLEngine (JSSE) 与旧客户端进行 SSL 握手

ssl - 我如何知道在 SSL 上下文中加载的 CA 主题名称列表

security - 使用 WSS 进行身份验证然后使用 WS 进行数据有意义吗?

c# - 我已经添加了公钥后,如何将私钥添加到 X509Certificate2?

java - 调试 keystore 将不起作用