2011-01-07 5 views
2

Ich habe versucht, SSL-Session-Wiederverwendung auf iOS, Java-Desktop und Android. iOS scheint zu versuchen, SSL-Sitzungen wiederzuverwenden (aber nicht die ganze Zeit). Java scheint Sitzungen immer wiederzuverwenden, solange Sie beim Erstellen einer SSLE-Engine den Hostnamen/Port übergeben.SSL Session Wiederverwendung Probleme in Android (J2SE funktioniert gut)

Wenn ich zu Android komme, habe ich ein paar Probleme. Der Code, den ich benutzte, um Java SSL Session Wiederverwendung zu testen (eine Verbindung erstellen, ein paar Nachrichten senden, die Verbindung abbrechen und eine Sekunde warten, wiederholen) funktionierte überhaupt nicht richtig auf Froyo, arbeitete im Gingerbread Emulator, aber didn ' t Sitzungen wiederverwenden.

Ich schaute dann ein wenig tiefer in den Android-Code und ich sehe, es gibt eine alternative Methode zum Speichern von SSL-Sitzungen mit dem SSLSessionCache/SSLCertificateSocketFactory, die von der AndroidHttpClient verwendet werden. Also habe ich einen Test für den AndroidHttpClient eingerichtet, der mehrere Anfragen über mehrere Verbindungen zu einem Apache-Server (von dem ich weiß, dass er die Wiederverwendung von SSL-Sitzungen unterstützt) gemacht hat und trotzdem keine Sitzungen in Froyo oder in Gingerbread wiederverwendet hat.

Wenn jemand in der Lage gewesen ist, dies funktioniert und könnte einige Beispiel Android Client-Code zeigen würde ich sehr geschätzt werden. Ich überlege mir, einen Fehlerbericht für Android zu erstellen, aber ich möchte nur sicherstellen, dass ich hier nicht etwas übersehen habe.

+0

Stehen Sie mit wireshark (oder gleichwertig) Sniffing sicher, dass Sie zu machen wissen, welcher Seite Weigerung, eine Sitzung wiederzuverwenden? –

+0

Ich benutze wireshark, um die Wiederverwendung von Sitzungen zu verifizieren. Der Android-Client legt die Sitzungs-ID nicht im Client-Handshake fest (der von J2SE- und iOS-Clients festgelegt wird). Daher kann die SSL-Sitzung nicht wiederverwendet werden. – Gareth

+0

Ich habe das gleiche Problem mit Android WebView. Es hält die SSL-Sitzung für fast 5 Sekunden. Auf der Serverseite habe ich ssl_session_timeout auf 10 Minuten gesetzt. Hast du einen Weg gefunden, das zu umgehen? – Enigma

Antwort