0

我确实有一个 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 类型。我使用与旧证书相同的别名。任何帮助 非常感谢

4

1 回答 1

1

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

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

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

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

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

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

于 2020-04-12T16:29:07.973 回答