У меня проблемы с использованием SSL, так как я получаю следующую ошибку, связанную с моим хранилищем ключей (самостоятельно -созданным и самостоятельным -подписанным с помощью keytool на:http://developer.android.com/tools/publishing/app-signing.html):
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.
Я нашел этот ответ полезным: неправильное хранилище ключей версии при вызове 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 /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 -, она говорит мне, что следующие допустимые параметры для параметра -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"
...)
Когда я гуглю :keytool -providerpath
Я не получаю ничего полезного, чтобы решить эту проблему.
Я не знаю, как решить проблему с версией хранилища ключей, не решая проблему с keytool. Любые предложения приветствуются.
Джим
(Mac OSX 10.6.8 if relevant)