2012-08-15 10 views
6

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) 
+0

Esta pregunta ya fue respondida aquí: http://stackoverflow.com/a/33197845/5459467 – Cukic0d

Respuesta

1

La discrepancia de la versión es para la versión del almacén de claves, no la versión de certificado (que debe tener el valor 2 para un certificado X.509 v3).

¿En qué versión del JDK usaste keytool? ¿Especificó una ruta completa al comando o usó lo que estaba en su PATH? ¿Estás seguro de que estás utilizando las tiendas clave JKS, y no las tiendas JCEKS?

+0

Muchas gracias por su opinión. – gymshoe

+0

1) no estoy seguro de cómo decir la versión de keytool que estoy usando. Estoy usando Java SE runtime environment = 1.6.0_33, y presumiblemente el JDK correspondiente que lo acompaña (ya que no realicé ninguna instalación por separado que yo sepa). Basado en my $ PATH, la herramienta de claves que estoy utilizando proviene del siguiente subdirectorio: Sistema/Biblioteca/JavaVM.framework/Versions/A. No sé por qué no sale del subdirectorio .../JavaVM.framework /Versions/1.6.0 ... – gymshoe

+0

2) No especifiqué una ruta, sino que usé la predeterminada. Como se indicó anteriormente, la ruta predeterminada encontraría keytool en: Sistema> Biblioteca/JavaVM.framework/Versions/A. Cuando hago especificar una ruta y ejecutar "Sistema> Biblioteca/JavaVM.framework/Versiones/1.6.0/keytool -help" me muestra la misma pantalla como mi herramienta de claves por defecto, es decir -genkeypair incluye la opción de -providerpath. – gymshoe

14

Mi problema estaba usando una versión de castillo hinchable que era demasiado nuevo. Tuve que usar 146 - más tarde y me dio este error.

+0

Lo mismo aquí, la versión 148 me da el mismo error, ¡muchas gracias! –

+0

Esto funciona, pero estoy desconcertado en cuanto a por qué haces una versión de Eclipse (148) que no funciona ... – Michael

+0

versión 147 me estaba dando el mismo error. Gracias –

0

Para completar la respuesta de Ryan, ya que tuve que indagar para saber cómo generar un BKS con Bouncy Castle 1.46, puede usar Portecle para generar el BKS.

  1. Descargar Boucycastle Provider 1.46
  2. Instalar o descomprimirlo.
  3. Reemplazar bcprov.jar en el directorio de instalación Portecle (ejemplo: C:\Program Files (x86)\Portecle\bcprov.jar). Se requiere el mismo nombre.
  4. Reinicie Portecle y genere su almacén de confianza BKS.

Esto explicó here.


Editar:

Desde Portecle 1.8, se puede utilizar el tipo de BKS-V1 para generar su almacén de confianza y sin sustituir bcprov.jar.

Puede seleccionarlo después de hacer clic en New keystore o cambiar el tipo a través del menú Tools -> Change KeyStore Type.

+1

Desde Portecle v1.8 basta con seleccionar BKS-V1 en el diálogo "Nuevo almacén de claves" o convertir entre BKS y BKS-V1 a través de "Herramientas -> Cambio de KeyStore Tipo". No es necesario reemplazar los frascos. – Omikron

+0

Tenía una versión anterior, es bueno saberlo. –

Cuestiones relacionadas