Błąd „Błędna wersja magazynu kluczy”. Jak mogę utworzyć certyfikat magazynu kluczy wersji = 1?

Mam problem z używaniem protokołu SSL, ponieważ otrzymuję następujący błąd związany z moim magazynem kluczy (samodzielnie utworzony i samopodpisany przy użyciu keytool na:http://developer.android.com/tools/publishing/app-signing.html):

08-14 20: 55: 23.044: W / System.err (5430): java.io.IOException: Zła wersja magazynu kluczy. 08-14 20: 55: 23.060: W / System.err (5430): w org.bouncycastle.jce.provider.JDKKeyStore.engineLoad (JDKKeyStore.java:812) ...

Błąd rzucony wJDKKeyStore.java klasa powstaje w następującym kodzie:

Blockquote From JDKKeyStore.java:
if (version! = STORE_VERSION) {if (version! = 0) {throw new IOException ("Zła wersja magazynu kluczy."); }}

Zablokować cytat

W tym przypadku STORE_VERSION = 1, a moja wersja = 3 na podstawie odczytu szczegółów certyfikatu przechowywanego przez utworzony przeze mnie magazyn kluczy. Nie wiem, jak wygenerować magazyn kluczy zawierający certyfikat w wersji = 1.

Ta odpowiedź okazała się pomocna:błędny plik kluczy podczas wykonywania połączenia https

wymaga jednak utworzenia magazynu kluczy przy użyciu następujących parametrów:

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

Jednak gdy próbuję utworzyć keytool (używając aplikacji terminalowej na Macu), używając następujących parametrów:

keytool -genkeypair -v -alias androiddebugkey -keyalg RSA -keysize 2048 -ważność 10000 -kompas android -keystore /Users/djames/dropbox/bc146keystore/debug.keystore -storepass android -providerclass org.bouncycastle.jce.provider.BouncyCastleProvider -providerpath / Użytkownicy / djames / dropbox / bc146keystore /

(gdzie / Users / djames / dropbox / bc146keystore / jest ścieżką do słoika nadmuchiwanego zamku: bcprov-jdk16-146.jar)

Otrzymuję następujący błąd:

błąd keytool: java.lang.RuntimeException: błąd użycia,? providerpath nie jest prawnym poleceniem java.lang.RuntimeException: błąd użycia,? providerpath nie jest prawnym poleceniem w sun.security.tools.KeyTool.parseArgs (KeyTool.java: 375) w sun.security.tools.KeyTool.run (KeyTool.java:171) w sun.security.tools.KeyTool.main (KeyTool.java:166)

Nie rozumiem, co mi to mówi. Jeśli użyję: keytool -help, mówi mi, że poniższe są poprawne opcje dla opcji -genkeypair:

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

Ale w Oracle docs java wersja 6, której używam (http://docs.oracle.com/javase/6/docs/technotes/tools/solaris/keytool.html)
mówi mi, że są to opcje:

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

który nie obejmuje-providerpath option. Dlaczego niezgodność? (Jeśli nie użyję opcji -providerpath, otrzymam nieznany wyjątek klasy w opcji:"-providerclass org.bouncycastle.jce.provider.BouncyCastleProvider"...)

Kiedy google: keytool -providerpath
Nic nie pomaga mi rozwiązać tego problemu.

Nie wiem, jak rozwiązać problem z wersją magazynu kluczy, nie rozwiązując mojego problemu z keytoolem. Wszelkie sugestie są doceniane.

Jim

(Mac OSX 10.6.8 if relevant)

questionAnswers(4)

yourAnswerToTheQuestion