关键工具 - 生成密钥错误:密钥库文件不存在。

16

我尝试创建一个新的自签名密钥库文件。

我使用的命令是:

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

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

5个回答

28

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

即:

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

1
从keytool在线文档中翻译:每当您使用-genkey、-import或-identitydb命令向尚不存在的密钥库添加数据时,都会创建一个密钥库。(http://download.oracle.com/javase/1.4.2/docs/tooldocs/solaris/keytool.html)。根据这个,keytool命令应该创建一个新的密钥库,而不是说它不存在。您能否给出如何执行您提到的这两个步骤的示例?根据keytool在线文档:每当您使用-genkey、-import或-identitydb命令向尚不存在的密钥库添加数据时,都会创建一个密钥库。因此,keytool命令应该创建一个新的密钥库,而不是说它不存在。请问您能否给出执行这两个步骤的示例? - Chris Friedl
@Chris Friedl - -genkey-selfcert 是两个独立的命令:你不能同时执行两个命令。 - OrangeDog
谢谢!最终用了两个单独的命令解决了问题。有趣的是,有几个网站提供的教程中将这两个命令写在一行中,就像我上面写的那样。 - Chris Friedl
1
它说没有找到存储文件?这里的store.jks是什么? - Mann

3
以管理员权限运行命令提示符即可完成。

2

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

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 

0

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

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


0

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

因此,在Java 6及以后版本中,请使用-certreq替换-selfcert


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接