| |||||||
Das Thema "SSL, Server / Client cert, Client private key" befindet sich unter Android App Entwicklung auf Android-Hilfe.de.
|
| | Themen-Optionen | Ansicht |
| | #1 (permalink) |
| Android-Hilfe.de Mitglied Registriert seit: 06.10.2009
Beiträge: 60
Abgegebene Danke: 10
Erhielt 1 Danke für 1 Beitrag
| ![]() zum Glück habe ich ein Anhaltspunkt und weiß genau wo ich hin muss. Zur Verdeutlichung hier der Ablauf in einer anderen App, welcher nach Android/Java gebracht werden soll. Es existiert ein verbundener Socket, der in SSL-Mode versetzt werden soll. Die bisherige App macht das mit openSSL wie folgt. // Methode festlegen m_pSSLMethod = TLSv1_client_method(); // Context erstellen m_pSSLContext = SSL_CTX_new(m_pSSLMethod); // selbst signiertes Serverzertifikat, nicht in Cert-chain einer // der großen bekannten CAs enthalten ! SSL_CTX_load_verify_locations(m_pSSLContext, CA_CERT); // Clientzertifikat laden SSL_CTX_use_certificate_file(m_pSSLContext, CERT_CLIENT, SSL_FILETYPE_PEM); // Clientkey laden SSL_CTX_use_PrivateKey_file(m_pSSLContext, PRIV_CLIENT, SSL_FILETYPE_PEM); soweit die Vorbereitungen, und nun der SSL-Handshake // SSL initalisieren ... m_pSSL = SSL_new(m_pSSLContext); // ... den bereits verbundenen Socket an SSL Layer übergeben SSL_set_fd(m_pSSL, m_sock); // ... Status setzten SSL_set_connect_state(m_pSSL); // Handshake SSL_do_handshake(m_pSSL); Mein Problem ist nur den Wald vor Bäumen nicht zu sehen ![]() obwohl ich diesmal schon ein paar Infos hab sammeln können wie dieses Beispiel: SSLContext and Key manager : SSL SocketSecurityJava Tutorial und diese Meldung habe ich auch schon im Debugger gesehen ![]() [android-developers] CertPathValidatorException: TrustAnchor for CertPat wie schauen nun meine Codefragmente in Java aus: // Context erstellen mit TLS Methode SSLContext ctx = SSLContext.getInstance("TLS"); // , laden der Zertifikate, wobei ich diese als// -----BEGIN CERTIFICATE----- // und // -----BEGIN RSA PRIVATE KEY----- // vorliegen habe // // hier fehlt mir ebend der entscheidende Teil // SSLSocket an bestehenden Socket binden // SSLSocketFactory f = (SSLSocketFactory) SSLSocketFactory.getDefault(); : SSLSocket mit SSLContext "initalisiere"SSLSocket c =(SSLSocket)f.createSocket(mSocket, mHost, mPort, false); // Handshake c.startHandshake(); Mein Problem ist nicht besonders androidspezifisch, bestenfalls - wie bekomme ich meine Zerti-Dateien in den Emulator geladen. Weil ohne die da drin zu haben muss ich wohl mit InputStream garnicht erst an- fangen. Herzlichen Dank fürs Kopfzerbrechen schon mal |
| | |
| | #2 (permalink) |
| Android-Hilfe.de Mitglied Registriert seit: 06.10.2009
Beiträge: 60
Abgegebene Danke: 10
Erhielt 1 Danke für 1 Beitrag
| ![]() macht die Verschlüsselung zwar etwas sinnlos aber es funktioniert erstmal so: Code:
Code: mSSLContext = SSLContext.getInstance("TLS");
|
| | |
| | #3 (permalink) |
| Neuer Benutzer Registriert seit: 10.12.2009
Beiträge: 6
Abgegebene Danke: 0
Erhielt 0 Danke für 0 Beiträge
|
Hallo, vorneweg: Ich bin kein Coder und habe erst seit ein paar Tagen das HTC Tattoo/Android Phone). Trotzdem habe ich das Gefühl das der Beitrag nahe an meinem Problem liegt: Ich benütze für meine beruflichen Emails einen Account auf einem eigenen Server mit einem selbst - signierten Zertifikat. Das Abrufen der Mails via HTC Mail (HTC Tattoo) oder K9 funktionert einwandfrei, aber das senden (SMTP mit SSL) versagt. Meldung: "Verbindung mit Mailserver kann nicht hergestellt werden um Kontoinformationen zu prüfen. Der Server reagiert nicht." Meine Hypothese: Es stimmt etwas mit der Authentifizierung nicht, da der Client das Zertifikat nicht liefert. Jetzt habe ich schon etwas im Netz gestöbert und es gibt wohl auf Android keine Möglichkeit Zertifikate einzufügen/einzusehen (Astro als Filemanger finde ich nichts). Habt ihr eine Idee wie ich die Nuß knacken kann...? |
| | |
| | #4 (permalink) |
| Android Experte Registriert seit: 30.04.2009
Beiträge: 542
Abgegebene Danke: 27
Erhielt 55 Danke für 44 Beiträge
|
Ich habe mal irgendwo gelesen, dass man das Zertifikat mit dem Browser aufrufen soll, damit diese in den Android Zertifikatsspeicher gelegt wird - vielleicht hilft Dir das ja weiter. Viele Grüße, arez |
| | |
| | #5 (permalink) |
| Neuer Benutzer Registriert seit: 10.12.2009
Beiträge: 6
Abgegebene Danke: 0
Erhielt 0 Danke für 0 Beiträge
|
Hallo, erstmal danke für die Antwort... Jippee - Habs hinbekommen! Es könnte gut sein, daß die Methode zumindest Teil der Lösung war: Habe nämlich die URL mal in den Browser kopiert und das Online Mail Programnm besucht. Dabei kam die Meldung wegen des selbst-signierten Zertifikats - beim erneuten aufrufen nicht mehr. Dannach bin ich nochmal meine Einstellungen im Mail Programm durch gegangen und habe noch mal diverses probiert: Und siehe da plötzlich hat es funktionert!! Dabei habe ich mal die Verschlüsselung zufällig von SSL auf TLS gestellt. Ein glücklicher Android Benürtzer mehr! |
| | |
| | #6 (permalink) |
| Android Experte Registriert seit: 30.04.2009
Beiträge: 542
Abgegebene Danke: 27
Erhielt 55 Danke für 44 Beiträge
|
Schön, wie gesagt, ich habe mal irgendwo gelesen, dass es noch ein Android-Bug ist, dass man die Zertifikate nur über Websites integrieren kann und nicht selbst... Viele Grüße, arez |
| | |
![]() |
|
| Themen-Optionen | |
| Ansicht | |
| |
| ||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| E-Mail Client | JayCoo | Samsung Galaxy (I7500) Forum | 5 | 20.06.2010 13:10 |
| [S]Blog-Client | Bear Knuckle | Sonstige Apps & Widgets | 1 | 24.03.2010 20:14 |
| Jabiru - Jabber Client | Zipp | Sonstige Apps & Widgets | 5 | 08.11.2009 12:36 |
| Twitter Client | Droid_Power | Sonstige Apps & Widgets | 9 | 11.10.2009 12:07 |
| K9 mail client | bestg1 | T-Mobile G1 Forum | 2 | 12.02.2009 23:34 |