2010-07-16 23 views
8

Tengo un certificado de servidor autofirmado (cert.pem) y necesito habilitarlo para sockets SSL en una aplicación de Android. Idealmente, me gustaría empaquetar el código como archivo .jar y no necesitar un archivo de certificado externo (es decir, incluirlo en el código).¿Cómo habilitar un certificado autofirmado para sockets SSL en Android?

Con este código Puedo aceptar todos los certificados, que no es lo que quiero:

SSLContext sc = SSLContext.getInstance("TLS"); 
sc.init(null, new TrustManager [] { new MyTrustManager() }, new SecureRandom()); 

¿Es necesario agregar el certificado a una costumbre o la costumbre KeyManager TrustManager?

Un problema que he encontrado es que Android no acepta almacenes de claves JKS (KeyStore.getDefaultType() devuelve "BKS"): " java.security.KeyStoreException: aplicación de KeyStore JKS no encontrado"

Cualquier ¡las ideas de cómo proceder serían muy apreciadas!

Respuesta

13

Sí, necesita agregar el certificado a un KeyStore personalizado. Básicamente es un proceso de 4 pasos:

  1. Obtenga su certificado de servidor.
  2. Importe el certificado del servidor a un almacén de claves como recurso sin procesar en su aplicación. El tipo de KeyStore debe ser BKS.
  3. Cree su propio TrustManager en su programa Java/Android para cargar el certificado en un SSLContext.
  4. Use ese SSLContext para sus conexiones SSL.

Ver este enlace para obtener instrucciones detalladas y código de ejemplo:
http://randomizedsort.blogspot.com/2010/09/step-to-step-guide-to-programming.html

Buena suerte.
Nehc

Cuestiones relacionadas