"错误的密钥库版本"错误.如何创建version = 1密钥库证书?

gym*_*hoe 7 ssl android keytool android-keystore

我在使用SSL时遇到问题,因为我收到了与我的密钥库相关的以下错误(使用keytool自行创建和自签名:http://developer.android.com/tools/publishing/app-signing.html) :

08-14 20:55:23.044:W/System.err(5430):java.io.IOException:密钥库的错误版本.08-14 20:55:23.060:W/System.err(5430):at org.bouncycastle.jce.provider.JDKKeyStore.engineLoad(JDKKeyStore.java:812)...

JDKKeyStore.java类中引发的错误出现在以下代码中:

来自JDKKeyStore.java的Blockquote:
if(version!= STORE_VERSION){if(version!= 0){throw new IOException("key store的错误版本."); }}

大段引用

在这种情况下,STORE_VERSION = 1,我的版本= 3基于读取我创建的密钥库所持有的证书的详细信息.我不知道如何生成包含version = 1证书的密钥库.

我发现这个答案很有帮助: 在进行https调用时错误的版本密钥库

但是它要求使用以下参数创建密钥库:

-storetype BKS
-provider org.bouncycastle.jce.provider.BouncyCastleProvider -providerpath
/path/to/bouncycastle.jar

但是,当我尝试使用以下参数创建keytool(使用Mac上的终端应用程序)时:

keytool -genkeypair -v -alias androiddebugkey -keyalg RSA -keysize 2048 -validity 10000 -keypass android -keystore /Users/djames/dropbox/bc146keystore/debug.keystore -storepass android -providerclass org.bouncycastle.jce.provider.BouncyCastleProvider -providerpath /用户/ djames /保管箱/ bc146keystore /

(其中/ Users/djames/dropbox/bc146keystore /是充气城堡罐子的路径:bcprov-jdk16-146.jar)

我收到以下错误:

keytool错误:java.lang.RuntimeException:用法错误,?providerpath不是合法命令java.lang.RuntimeException:用法错误,?providerpath不是sun.security.tools.KeyTool.parseArgs的合法命令(KeyTool.java: 375)sun.security.tools.KeyTool.run(KeyTool.java:171)at sun.security.tools.KeyTool.main(KeyTool.java:166)

我不明白这告诉我的是什么.如果我使用:keytool -help它告诉我以下是-genkeypair选项的有效选项:

-genkeypair [-v] [-protected] [-alias] [-keyalg] [-keysize] [-sigalg] [-dname] [-validity] [-keypass] [-keystore] [-storepass] [-storetype] [-providername] [-providerclass [-providerarg]] ... [-providerpath]

但是在我使用的Oracle docs java版本6(http://docs.oracle.com/javase/6/docs/technotes/tools/solaris/keytool.html)中,
它告诉我这些是选项:

-genkeypair {-alias alias} {-keyalg keyalg} {-keysize keysize} {-sigalg sigalg} [-dname dname] [-keypass keypass] {-validity valDays} {-storetype storetype} {-keystore keystore} [-storepass storepass] {-providerClass provider_class_name {-providerArg provider_arg}} {-v} {-protected} {-Jjavaoption}

其中不包括-providerpath option.为什么不和谐?(如果我不使用-providerpath选项,那么我在选项中得到一个未知的类异常:"-providerclass org.bouncycastle.jce.provider.BouncyCastleProvider"...)

当我google:keytool -providerpath
我没有任何帮助来解决这个问题.

我不知道如何在不解决我的keytool问题的情况下解决我的密钥库版本问题.任何建议赞赏.

吉姆

(Mac OSX 10.6.8 if relevant)
Run Code Online (Sandbox Code Playgroud)

Rya*_*yan 14

我的问题是使用了一个太新的充气城堡版本.我不得不使用146 - 任何以后它给了我这个错误.


gym*_*hoe 5

我能够通过密钥库版本解决这个问题。请参阅:创建 BKS 密钥库时出现 keytool 错误:providerpath 不是合法命令