2011-08-03 10 views
12

Hola codificadores de Android compañeros.almacén de claves de la versión incorrecta al hacer llamadas https

Estoy tratando de hacer una llamada segura de https desde mi código de Android. La llamada funciona bien en el emulador, pero en el dispositivo Samsung Galaxy real recibo un error de SSL.

Utilicé el método de bobs locos para manejar el certificado. Aquí está el enlace loco de Bob: http://blog.crazybob.org/2010/02/android-trusting-ssl-certificates.html.

Problema es que aparece un error: "versión incorrecta del almacén de claves" dentro del objeto personalizado SSLSocketFactory.

¿Alguna sugerencia sobre qué hacer para solucionar esto? Gracias.

+0

Posible duplicado de [Versión incorrecta del almacén de claves en la llamada de Android] (https://stackoverflow.com/questions/11117486/wrong-version-of-keystore-on-android-call) – Cukic0d

Respuesta

28

¿Creó su almacén de claves con el formato Bouncy Castle? Todos estos 3 parámetros son obligatorios al crear el almacén de claves con la herramienta de claves (y especialmente el tipo de almacén de claves debe ser BKS):

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

Android utiliza la versión 1.46 de BouncyCastle, asegúrese de usar esta versión al crear el almacén de claves La versión 1.46 se encuentra here

0

En caso de que alguien se tropiece con esto y la excelente respuesta de @Jcs no lo resuelve: experimenté exactamente los mismos problemas, y resultó que no instalé correctamente los certificados SSL en mi servidor web. Tuve la idea cuando usé digicert's SSL testing tool: Mi proveedor de certificados usó la práctica común de firmar certificados de servidor con una CA intermedia. Después de instalar la cadena de certificados (que vincula la CA intermedia del emisor con su CA raíz), todo funcionó bien.

0

Una alternativa fácil es utilizar Portecle para generar el BKS:

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

Observación: Para mí, el problema estaba en Android 4.0.3 y eso lo solucionó.

Más explicaciones here.

Cuestiones relacionadas