Estoy teniendo problemas para usar SSL, ya que estoy recibiendo el siguiente error relacionado con mi almacén de claves (de creación propia y auto-firmado utilizando herramienta de claves por: http://developer.android.com/tools/publishing/app-signing.html):Error de "versión incorrecta del almacén de claves". ¿Cómo puedo crear un certificado de almacén de claves version = 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) ...
El error que se produce en la clase JDKKeyStore.java
surge en el siguiente código:
Blockquote From JDKKeyStore.java:
if (version != STORE_VERSION) { if (version != 0) { throw new IOException("Wrong version of key store."); } }Blockquote
en este caso STORE_VERSION = 1, y = 3 mi versión basada en la lectura de los detalles del certificado en poder del almacén de claves que he creado. No sé cómo generar un almacén de claves que contenga un certificado de versión = 1.
he encontrado útil esta respuesta: wrong version keystore when doing https call
sin embargo, contempla la creación del almacén de claves utilizando los siguientes parámetros:
-storetype BKS
-provider org.bouncycastle.jce.provider.BouncyCastleProvider
-providerpath /path/to/bouncycastle.jar
Sin embargo, cuando intento crear la herramienta de claves (usando la aplicación de terminal en Mac) usando los siguientes parámetros:
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/
(en/Users/djames/dropbox/bc146keystore/es T él ruta de acceso al castillo hinchable jar: bcprov-jdk16-146.jar)
me sale el siguiente error:
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)
No entiendo lo que esto me está diciendo. Si utilizo: keytool -help me dice que los siguientes son opciones válidas para la opción -genkeypair:
-genkeypair [-v] [-protected] [-alias ] [-keyalg ] [-keysize ] [-sigalg ] [-dname ] [-validity ] [-keypass ] [-keystore ] [-storepass ] [-storetype ] [-providername ] [-providerclass [-providerarg ]] ... [-providerpath ]
Pero en la versión de Oracle documentos java 6 que estoy usando (http://docs.oracle.com/javase/6/docs/technotes/tools/solaris/keytool.html)
Me dice que estas son las opciones:
-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}
que no incluye la -providerpath option
. ¿Por qué la discordancia? (Si no uso la opción -providerpath, cuando me siento una excepción de clase desconocida en la opción: "-providerclass org.bouncycastle.jce.provider.BouncyCastleProvider"
...)
Cuando Google: herramienta de claves -providerpath
me sale nada útil para resolver esto.
No estoy seguro de cómo resolver mi problema de versión de almacén de claves sin resolver mi problema de keytool. Cualquier sugerencia apreciada.
Jim
(Mac OSX 10.6.8 if relevant)
Esta pregunta ya fue respondida aquí: http://stackoverflow.com/a/33197845/5459467 – Cukic0d