【问题标题】:How can I import a SHA1 cert into Keystore as PrivateKeyEntry Type instead of trustedCertEntry如何将 SHA1 证书作为 PrivateKeyEntry 类型而不是trustedCertEntry 导入密钥库
【发布时间】:2020-07-25 04:38:50
【问题描述】:

我确实有一个 Jks 文件 (key.jks),其中有一个别名为 abc 的现有 SHA1 证书(server.cer)。证书已过期,我必须用我得到的新证书来更新它。上一个条目的条目类型为 PrivateKeyEntry 。我已删除旧条目,并尝试使用 keytool import 命令导入新证书,它始终将 entryType 添加为 trustedCertEntry由于握手失败。我正在使用的命令如下。

keytool -import -keystore key.jks -storepass changeit -alias abc -file server.cer

如何将此证书添加为 PrivateKeyEntry 类型。我使用与旧证书相同的别名。 任何帮助非常感谢

【问题讨论】:

    标签: java cryptography keystore jks x509certficiate2


    【解决方案1】:

    PrivateKeyEntry 实际上是一个包含 3 个部分的“密钥对”。一个私钥、一个公钥和一个证书。证书可以是自签名的,也可以由其他实体(受信任的证书颁发机构 - CA)签名。

    trustedCertEntry 只是具有分配的公钥(没有私钥)的证书。

    当证书过期时,您可以创建新的密钥对、证书签名请求 (csr),当 CA 颁发新证书时,您可以导入证书回复。

    有时 CA 可能会为同一个公钥颁发新证书,因此您只需导入回复即可。

    导入证书(回复)- 实际上,您在第二部分做得很好。如果您导入证书并且已经存在密钥对 (PrivateKeyEntry),keytool 会检查证书是否与公钥匹配,然后用保留私钥的新证书替换旧证书。

    问题在于您确实删除了您的私钥。我希望你有一个备份。如果没有,我建议创建一个新的密钥对并申请一个新的证书。

    【讨论】:

    • 感谢您的回复。我确实有一个旧的备份文件。我可以尝试添加新证书而不删除旧证书吗?它会用带有 privateKeyEntry EntryType 的新的替换现有的吗?
    • @liam 创建备份副本并试用。如果证书是为相同的kepair制作的,那么是的,证书将被替换为相同的私钥
    • 所以基本上它不适用于现有 certs 的顶部。它将错误作为回复的公钥给出,并且密钥库不匹配。因此 CA 已颁发新证书。你能给我一些指导链接吗?在这种情况下我应该如何继续。我是否也需要与客户共享相同的公钥和证书?抱歉,我对这个过程完全陌生
    • @Liam:如果新证书与旧密钥条目不匹配,则 CA 不仅发布了新证书,还为 NEW KEYPAIR 和 CSR 发布了新证书。如果您发送了该 CSR,那么您一定已经生成了新的密钥对——使用它。如果其他人发送了 CSR,请从他们那里获取新的密钥对。此外,如果服务器回复在服务器证书之后尚未包含任何所需的 chain 证书,请将它们添加到回复中或确保它们在您之前单独位于密钥库中(作为trustedCertEntry)进口。 (需要什么链证书取决于您没有识别或描述的 CA。)
    猜你喜欢
    • 2018-12-08
    • 1970-01-01
    • 2014-09-18
    • 2016-10-26
    • 1970-01-01
    • 2014-03-01
    • 2011-05-18
    • 1970-01-01
    相关资源
    最近更新 更多