2012-08-18 18 views
15

Estoy intentando conectar con un servidor TLS basado en Node.js de mi aplicación para Android. Naturalmente falla porque utilizo un certificado autofirmado.conexión TLS y Android certificado autofirmado

¿Hay alguna forma que sólo puede agregar el certificado a mi aplicación y tienen la confianza Android de alguna manera? Tenga en cuenta, no estoy usando HTTPS, este es un TLS a través de la conexión TCP. No se recomienda

Respuesta

16

Después de un montón de lectura alrededor, se me ocurrió una respuesta.

una muy buena guía está aquí: http://nelenkov.blogspot.no/2011/12/using-custom-certificate-trust-store-on.html

Ahora, ya que no estoy usando HTTPS, tenía que llegar a un enfoque ligeramente diferente para conseguir un socket SSL limpia con el nuevo almacén de claves:

KeyStore store = KeyStore.getInstance("BKS"); 
InputStream truststore = mainActivity.getResources().openRawResource(R.raw.trust); 
store.load(truststore, "PASSWORD".toCharArray()); 
TrustManagerFactory tmf = TrustManagerFactory.getInstance(KeyManagerFactory.getDefaultAlgorithm()); 
tmf.init(store); 
SSLContext context = SSLContext.getInstance("TLS"); 
context.init(null, tmf.getTrustManagers(), new SecureRandom()); 
Socket socket = context.getSocketFactory().createSocket(ip, port); 
7

Adición de certificado a su aplicación. Tendrá problemas para actualizar el certificado.

¿Ha visto:

Self-signed SSL acceptance on Android

HTTPS GET (SSL) with Android and self-signed server certificate
?

+0

Creo que es una buena idea codificar una huella dactilar en una aplicación. Actualizar una aplicación para usar una nueva huella digital no es difícil, y elimina toda la basura relacionada con CA. – CodesInChaos

+0

Lo sentimos, he estado terriblemente ocupado últimamente. Revisaré esto esta noche antes de que caduque la recompensa :) –

+0

Te di un +1 por los enlaces. Por supuesto, los métodos en esos enlaces hacen que la aplicación confíe en TODOS, lo que ciertamente no es lo que estaba buscando. Aún así, podría ser interesante para las personas en un entorno de prueba. :) –

Cuestiones relacionadas