08-14 20:55:23.044: W/System.err(5430): java.io.IOException: Wrong
version of key store. 08-14 20:55:23.060: W/System.err(5430): at
org.bouncycastle.jce.provider.JDKKeyStore.engineLoad(JDKKeyStore.java:812)
…
JDKKeyStore.java类中引发的错误出现在以下代码中:
Blockquote
From JDKKeyStore.java:
if (version != STORE_VERSION)
{
if (version != 0)
{
throw new IOException(“Wrong version of key store.”);
}
}Blockquote
在这种情况下,STORE_VERSION = 1,我的版本= 3基于读取我创建的密钥库所持有的证书的详细信息.我不知道如何生成包含version = 1证书的密钥库.
我觉得这个答案很有帮助:
wrong version keystore when doing https call
但是它要求使用以下参数创建密钥库:
-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 /Users/djames/dropBox/bc146keystore/
(其中/ Users / djames / dropBox / bc146keystore /是充气城堡罐子的路径:bcprov-jdk16-146.jar)
我收到以下错误:
keytool error: java.lang.RuntimeException: Usage error,?providerpath
is not a legal command java.lang.RuntimeException: Usage error,
?providerpath is not a legal command at
sun.security.tools.KeyTool.parseArgs(KeyTool.java:375) at
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选项.为什么不和谐?
(如果我不使用-providerpath选项,那么我在选项中得到一个未知的类异常:“ – providerclass org.bouncycastle.jce.provider.BouncyCastleProvider”…)
当我google:keytool -providerpath
我没有任何帮助来解决这个问题.
我不知道如何在不解决我的keytool问题的情况下解决我的密钥库版本问题.任何建议赞赏.
吉姆
(Mac OSX 10.6.8 if relevant)