2012-08-15 63 views
6

我在使用SSL麻烦,因为我正在与我的密钥库下面的错误(自我创造和使用每keytool的自签名:http://developer.android.com/tools/publishing/app-signing.html):“密钥存储版本错误”错误。我如何创建一个版本= 1的密钥库证书?

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基于阅读由我创建密钥库举行的证书的详细信息。我不知道如何生成包含版本= 1证书的密钥库。

我发现这个答案有帮助: wrong version keystore when doing https call

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

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

然而,当我尝试创建密钥工具(在使用终端应用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 /是t他路径充气城堡的jar: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文档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" ...)

当我谷歌:密钥工具-providerpath
我得到什么有用的解决这个问题。

我不知道如何解决我的密钥库版本问题,而不解决我的keytool问题。任何建议感激。

吉姆

(Mac OSX 10.6.8 if relevant) 
+0

这个问题已经在这里解答: http://stackoverflow.com/a/33197845/5459467 – Cukic0d 2015-10-18 17:47:41

回答

1

的版本不匹配的密钥存储版本,而不是证书版本(应该有一个v3的X.509证书的价值2)。

您使用的是什么版本的JDK keytool?你是否指定了命令的完整路径,或者使用了你的内存?你确定你正在使用JKS密钥存储,而不是JCEKS商店吗?

+0

非常感谢你的想法。 – gymshoe 2012-08-16 02:43:20

+0

1)不确定如何知道我正在使用的keytool的版本。我正在使用Java SE运行时环境= 1.6.0_33,并且大概是相应的JDK(因为我没有执行任何单独的安装,我知道)。根据我的$ PATH,我使用的keytool出自以下子目录:System/Library/JavaVM.framework/Versions/A。我不知道它为什么不出来:.../JavaVM.framework /Versions/1.6.0子目录... – gymshoe 2012-08-16 02:44:22

+0

2)我没有指定路径,而是使用默认值。如上所述,默认路径将在以下位置找到keytool:System> Library/JavaVM.framework/Versions/A。当我指定一个路径并运行“System> Library/JavaVM.framework/Versions/1.6.0/keytool -help”时,它将显示与我的默认keytool相同的显示,即-genkeypair包含-providerpath选项。 – gymshoe 2012-08-16 02:45:13

14

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

+0

同样在这里,版本148给了我同样的错误,非常感谢! – 2013-05-23 07:56:42

+0

这是有效的,但我对为什么Eclipse捆绑一个不起作用的版本(148)感到困惑...... – Michael 2014-07-14 21:16:45

+0

版本147给了我同样的错误。 Thanks – 2015-11-17 12:38:29

0

为了完成Ryan的答案,我必须深入了解如何生成带Bouncy Castle 1.46的BKS,您可以使用Portecle来生成BKS。

  1. 下载Boucycastle Provider 1.46
  2. 安装或解压。
  3. 替换Portecle安装目录中的bcprov.jar(例如:C:\Program Files (x86)\Portecle\bcprov.jar)。相同的命名是必需的。
  4. 重新启动Portecle并生成您的BKS信任库。

这解释了here


编辑

由于Portecle 1.8,你可以使用BKS-V1型生成您的信任,而不更换bcprov.jar

您可以点击New keystore选择它或通过菜单Tools -> Change KeyStore Type更改类型。

+1

由于Portecle v1.8,您可以简单地在“New KeyStore”对话框中选择BKS-V1,或通过“Tools - > Change KeyStore Type”在BKS和BKS-V1之间进行转换。无需更换罐子。 – Omikron 2015-12-14 15:33:56

+0

我有一个旧版本,很高兴知道。 – 2015-12-14 15:44:42

相关问题