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 )