java - 如何将 SHA1 证书作为 PrivateKeyEntry 类型而不是 trustCertEntry 导入到 keystore 中

标签 java cryptography keystore jks x509certficiate2

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

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

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

最佳答案

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

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

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

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

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

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

关于java - 如何将 SHA1 证书作为 PrivateKeyEntry 类型而不是 trustCertEntry 导入到 keystore 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61174024/

相关文章:

java - EC 签名大小?

android - 如何将openssl生成的RSA私钥导入AndroidKeyStore

java - <使用 Jsoup 解析 html 时缺少输入值?

java - 当屏幕方向改变时android线程崩溃

C# BouncyCaSTLe - 使用公钥/私钥的 RSA 加密

c# - 从私有(private)指数 (d)、公共(public)指数 (e) 和模数 (n) 计算素数 p 和 q

带签名的 Android 指纹认证

java - 客户端证书丢失 : How to recover it

java - PDFTable Itext 阿拉伯语

java - Spark 使用 sc.textFile 从 S3 读取文件(“s3n ://. ..)