keytool -genkey 错误:密钥库文件不存在

Posted

技术标签:

【中文标题】keytool -genkey 错误:密钥库文件不存在【英文标题】:keytool -genkey error: Keystore file does not exist 【发布时间】:2011-06-22 15:32:55 【问题描述】:

我尝试创建一个新的自认证密钥库文件

我使用的命令是:

keytool -genkey -selfcert -dname "cn=My Name, ou=Orga unit" -alias selfcertified -keypass somepass -keystore keystore.jks -storepass anotherpass -validity 365

但我总是遇到这个烦人的错误:

keytool error: java.lang.Exception: Keystore file does not exist: keystore.jks

我不明白为什么会出现此错误。上面的命令应该创建一个新的密钥库,为什么它抱怨一个不存在的存储?

【问题讨论】:

【参考方案1】:

生成一个密钥对(和一个新的密钥库)必须作为一个单独的操作来为该密钥创建一个自签名证书。

keytool -genkey -alias myKey -keystore store.jks
keytool -selfcert -alias myKey -keystore store.jks

【讨论】:

来自 keytool 在线文档:每当您使用 -genkey、-import 或 -identitydb 命令将数据添加到尚不存在的密钥库时,都会创建一个密钥库。 (download.oracle.com/javase/1.4.2/docs/tooldocs/solaris/…)。据此,keytool 命令应该创建一个新的密钥库,而不是说它不存在。您能否举例说明如何执行您提到的这两个步骤? @Chris Friedl - -genkey-selfcert 是单独的命令:您不能同时执行这两个命令。 谢谢! - 两个单独的命令最终做到了。有趣的是,正如我上面写的那样,有几个网站在一行中提供了两个命令的教程。 它说找不到存储文件?这里的 store.jks 是什么?【参考方案2】:

以管理员身份运行命令提示符即可完成。

【讨论】:

【参考方案3】:

首先使用以下命令生成上传密钥:

keytool -genkeypair -v -keystore my-upload-key.keystore -alias my-key-alias -keyalg RSA -keysize 2048 -validity 10000

然后运行

keytool -exportcert -keystore path-to-debug-or-production-keystore -list -v 

【讨论】:

【参考方案4】:

-selfcert 选项在 Java 6 的 keytool 中已过时。请在此处查看“更改”的最后一部分:Java 6 Keytool

所以对于 Java 6 及更高版本,将 -selfcert 替换为 -certreq

【讨论】:

【参考方案5】:

似乎是一个旧链接,但这是我尝试过的 - 希望这对某人有所帮助。 就我而言,由于以下位置缺少 .keystore 文件,因此我运行了以下命令; keytool -genkey -alias mykey -keystore "C:\Users\username.keystore" 这会在该位置创建一个 .keystore 文件,系统会要求您提供类似的信息 你的名字和姓氏是什么? 您的组织单位的名称是什么? 您的组织名称是什么? 您所在城市或地区的名称是什么? 您所在的州或省的名称是什么? 本机的两个字母的国家/地区代码是什么? CN=XXX、OU=XXX、O=XXX、L=XXX、ST=XXX、C=IN 正确吗?

说“是”,就会创建密钥库。

【讨论】:

以上是关于keytool -genkey 错误:密钥库文件不存在的主要内容,如果未能解决你的问题,请参考以下文章

默认密钥库文件不存在?

错误记录Android 生成签名文件乱码报错 ( keytool -importkeystore -srckeystore 1.jks -destkeystore 2.jks -deststo )

如何在 Keytool 中使用 pem 和密钥文件生成 p12 文件

是啥导致 keytool 错误“无法解密安全内容条目”?

keytool 如何保护密钥?

PFX 到 JKS 密钥工具的转换:别名 <*> 不存在