是否可以使用keytool或同等产品在.JKS密钥库中重新生成私钥?
我已经提供了证书和JKS密钥库,但是在导入证书时,看起来已经删除了用于生成CSR的私钥。
我可以看到如何使用新的私钥创建新的密钥库,但这不会与CSR或证书匹配。
答案 0 :(得分:4)
不,这就是非对称加密的重点:当只知道公钥(包含在CSR和证书中)时,无法生成私钥。
如果您只能从CSR或证书重新生成私钥,则任何人都可以冒充已颁发证书的实体。
如果您丢失了私钥,则只需创建新的密钥对,提交新的CSR并获取新证书即可。一些CA允许在初始证书期间免费将这种重新键入作为合同的一部分。
编辑:只是为了澄清CSR是什么。
要申请X.509证书,您必须:
然后,您必须将此证书与匹配其公钥的私钥一起使用。有些工具使用单独的文件执行此操作,也可以将证书导入密钥库中的私钥条目。
拥有CSR或没有私钥的证书是没有用的。您可以轻松地再次创建新的CSR,但您还需要创建一个新的密钥对。 CSR最重要的部分是公钥,并具有匹配的私钥。否则你可以丢弃CSR。
答案 1 :(得分:0)
是否可以使用keytool或同等产品在.JKS密钥库中重新生成私钥?
是的,但重新生成私钥和CSR。 CSR将提交给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:\ Program Files \ 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
答案 2 :(得分:0)
我遇到了同样的麻烦(我的私钥被意外地从密钥库中删除)并且只有一种方法可以恢复它:用备份替换密钥库文件(* .jks)。因此,我建议始终使用与SSL相关的所有文件进行备份,如果在密钥库中错误地删除了任何内容,只需将文件替换为较旧的文件即可。