是否可以使用 keytool 或等效工具在 .JKS 密钥库中重新生成私钥?
我已获得证书和 JKS 密钥库,但在导入证书时,用于生成 CSR 的私钥似乎已被删除。
我可以看到如何使用新的私钥创建新的密钥库,但这与 CSR 或证书不匹配。
不,这就是非对称密码学的重点:在只知道公钥(包含在 CSR 和证书中)的情况下,无法生成私钥。
如果您只能从 CSR 或证书重新生成私钥,那么任何人都可以冒充证书颁发给的实体。
如果您丢失了您的私钥,您只需创建一个新的密钥对、提交一个新的 CSR 并获得一个新的证书。一些 CA 允许在初始证书有效期内作为其合同的一部分免费进行此类重新键入。
编辑:只是为了澄清什么是企业社会责任。
要申请 X.509 证书,您必须:
然后,您必须将此证书与与其公钥匹配的私钥一起使用。一些工具使用单独的文件执行此操作,也可以将证书导入回密钥库中的私钥条目。
没有私钥的 CSR 或证书是没有用的。您可以很容易地再次创建一个新的 CSR,但您还需要创建一个新的密钥对。CSR 中最重要的部分是公钥,并且要拥有与之匹配的私钥。否则,您可以丢弃 CSR。
是否可以使用 keytool 或等效工具在 .JKS 密钥库中重新生成私钥?
可以,但要重新生成私钥和 CSR。CSR 被提交给 CA,CA 为您提供了一个新的公钥。
您可以随时使用以下命令重新导入密钥库:
keytool.exe" -import -keystore "%JAVA_HOME%\jre\lib\security\cacerts" -file .\certificate.cer
确保您还将证书导入到较新 JDK 版本的两个路径:
C:\Program Files\Java\jdk1.6.0_31
较新的版本还部署了一个单独的 JRE:
C:\程序文件\Java\jre6
不这样做可能会导致日志中出现以下异常:
Caused by: javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
要重新生成您的私钥和 CSR,您可以使用以下命令:
$ openssl req -new -newkey rsa:2048 -nodes -keyout private.key -out signing request.csr -config openssl.conf
我遇到了同样的麻烦(我的私钥被意外从密钥库中删除了),只有一种方法可以恢复它:用备份替换密钥库文件 (*.jks)。因此,我建议始终对与 SSL 相关的所有文件进行备份,如果您在密钥库中错误地删除了任何内容,只需将文件替换为旧文件即可。