2012-08-15 189 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