2012-02-16 7 views
14

Estoy intentando conectarme al servidor utilizando el almacén de claves proporcionado por el equipo del servidor.¿Tiene el android support .jks keystore type?

Mientras que el envío de llamada de servicio al servidor de primera Instancia creé almacén de claves mediante el uso de la API siguiente

KeyStore keystore = KeyStore.getInstance(KeyStore.getDefaultType()); 

Se devolver el tipo de almacén de claves como “BKS”.

The Keystore lo que el equipo del servidor envió es del tipo ".jks" (somename.jks) Por lo tanto, recibo la excepción "Versión incorrecta del almacén de claves".

me trataron pasando “JKS” a getInstance() del almacén de claves siguiendo manera

KeyStore keystore = KeyStore.getInstance("JKS");  

Pero aquí estoy consiguiendo excepción “aplicación de KeyStore JKS no encontrado”.

Aquí está la pieza de código:

KeyStore trustStore = KeyStore.getInstance(KeyStore.getDefaultType()); 

InputStream instream = mContext.getAssets().open("somename.jks"); 

try { 
    trustStore.load(instream, "password".toCharArray()); 
} finally { 
    try { 
     instream.close(); 
    } catch(Exception ignore) { 
    } 
} 

favor, me guía para resolver este problema.

+0

"JKS" parece ser predeterminado. Si este KeyStore es del tipo "jks", la clave debe codificarse conforme al estándar PKS # 8 como EncryptedPrivateKeyInfo. tomado de aquí http://developer.android.com/reference/java/security/KeyStore.html#getType() y http://developer.android.com/reference/javax/crypto/EncryptedPrivateKeyInfo.html –

Respuesta

23

creo que el apoyo de Android 'sólo' BouncyCastle almacenes de claves (conocido como BKS) ... Puede seguir utilizando Portecle

Para convertirlo de JKS a BKS, debería funcionar como un encanto (al menos funcionó para yo cuando se trata de guardar mi .CRT en un formato BKS;)

'sólo' significado, fácilmente aquí:! p, de lo contrario vas a tener que manipular productos alimenticios

+1

Sí, JKS es un formato propiedad de Sun/Oracle y supongo que Google no se sentía como unos pocos pleitos más frívolos. – Jens

+0

@Cehm lo que dijiste es correcto, Android solo admite BKS. Obtuve el almacén de claves BKS del equipo servidor y funcionó como un hechizo con el mismo código. – sankar

+0

sí parece Android no es compatible con JKS .. también KeyStore.getDefaultType(); devuelve "BKS" –