2012-08-18 9 views
15

Ich versuche, eine Verbindung zu einem node.js basierten TLS-Server von meiner Android App herzustellen. Natürlich schlägt es fehl, weil ich ein selbstsigniertes Zertifikat verwende.Android TLS-Verbindung und selbst signiertes Zertifikat

Gibt es trotzdem ich kann nur das Zertifikat meiner App hinzufügen und Android irgendwie vertrauen? Hinweis: Ich verwende kein HTTPS, dies ist eine TLS über TCP-Verbindung.

Antwort

16

Nach viel lesen, kam ich auf eine Antwort.

Ein ziemlich guter Führer ist hier: http://nelenkov.blogspot.no/2011/12/using-custom-certificate-trust-store-on.html

Jetzt, da ich nicht mit HTTPS, hatte ich mit einem etwas anderen Ansatz zu kommen für einen sauberen SSL-Socket mit dem neuen Schlüsselspeicher bekommen:

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

Das Hinzufügen eines Zertifikats zu Ihrer Anwendung wird nicht empfohlen. Sie haben Probleme mit der Aktualisierung des Zertifikats.

Haben Sie sich:

Self-signed SSL acceptance on Android

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

+0

Ich denke, ein Fingerabdruck in eine Anwendung hardcoding ist eine gute Idee. Das Aktualisieren einer Anwendung, um einen neuen Fingerabdruck zu verwenden, ist nicht schwer, und es schneidet den ganzen CA-bezogenen Mist aus. – CodesInChaos

+0

Sorry, ich war in letzter Zeit sehr beschäftigt. Ich werde heute Abend darüber nachdenken, bevor die Bounty abläuft :) –

+0

Ich habe Ihnen +1 für die Links gegeben. Natürlich machen die Methoden in diesen Links die App auf JEDEN, der sicherlich nicht das ist, was ich gesucht habe. Trotzdem könnte es für Leute in einer Testumgebung interessant sein. :) –

Verwandte Themen