"Erro na versão do armazenamento de chaves". Como posso criar um certificado de keystore version = 1?

Estou com problemas para usar o SSL, pois estou recebendo o seguinte erro relacionado ao meu keystore (criado por mim e auto-assinado usando keytool per:http://developer.android.com/tools/publishing/app-signing.html):

08-14 20: 55: 23.044: W / System.err (5430): java.io.IOException: Versão incorreta do armazenamento de chaves. 08-14 20: 55: 23.060: W / System.err (5430): em org.bouncycastle.jce.provider.JDKKeyStore.engineLoad (JDKKeyStore.java:812) ...

O erro lançado noJDKKeyStore.java classe surge no seguinte código:

Blockquote De JDKKeyStore.java:
if (versão! = STORE_VERSION) {if (versão! = 0) {throw new IOException ("Versão incorreta do armazenamento de chaves."); }}

Bloco de citação

Neste caso STORE_VERSION = 1 e minha versão = 3 com base na leitura dos detalhes do certificado mantido pelo keystore que criei. Eu não sei como gerar um keystore contendo um certificado version = 1.

Eu achei esta resposta útil:keystore versão errada ao fazer chamadas https

no entanto, ele solicita a criação do keystore usando os seguintes parâmetros:

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

No entanto, quando tento criar o keytool (usando o aplicativo terminal no Mac) usando esses parâmetros:

keytool -genkeypair -v -alias androiddebugkey -keyalg RSA -keyize 2048 -valididade 10000 -keypass android -keystore /Users/djames/dropbox/bc146keystore/debug.keystore -storepass android -providerclass org.bouncycastle.jce.provider.BouncyCastleProvider –provedor do caminho / Users / djames / dropbox / bc146keystore /

(onde / Users / djames / dropbox / bc146keystore / é o caminho para o pote do castelo insuflável: bcprov-jdk16-146.jar)

Estou tendo o erro a seguir:

keytool error: java.lang.RuntimeException: erro de uso,? providerpath não é um comando legal java.lang.RuntimeException: erro de uso,? providerpath não é um comando legal em sun.security.tools.KeyTool.parseArgs (KeyTool.java: 375) em sun.security.tools.KeyTool.run (KeyTool.java:171) em sun.security.tools.KeyTool.main (KeyTool.java:166)

Eu não entendo o que isso está me dizendo. Se eu usar: keytool -help, isso indica que as opções a seguir são válidas para a opção -genkeypair:

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

Mas no Oracle docs java versão 6 que estou usando (http://docs.oracle.com/javase/6/docs/technotes/tools/solaris/keytool.html)
isso me diz que estas são as opções:

-genkeypair {-alias alias} {-keyalg keyalg} {-chavesize-chave-de-chave} {-sigalg sigalg} [-dname dname] [-chave keypasspass] {-validade valDays} {-storetype storetype} {-keystore keystore} [-storepass storepass] {-providerClass provider_class_name {-providerArg provider_arg}} {-v} {-protected} {-Jjavaoption}

que não inclui o-providerpath option. Por que a discordância? (Se eu não usar a opção -providerpath, obtenho uma exceção de classe desconhecida na opção:"-providerclass org.bouncycastle.jce.provider.BouncyCastleProvider"...)

Quando eu google: keytool -providerpath
Não recebo nada útil para resolver isso.

Não sei como resolver o problema da versão do meu keystore sem resolver o problema do keytool. Qualquer sugestão apreciada.

Jim

(Mac OSX 10.6.8 if relevant)

questionAnswers(4)

yourAnswerToTheQuestion