Während der TLS-Aushandlung senden Clients eine Liste mit unterstützten Verschlüsselungscodes an den Server, der Server wählt eine aus und die Verschlüsselung wird gestartet. Ich möchte diese Verschlüsselungsliste ändern, die von Android an den Server gesendet wird, wenn ich HttpsURLConnection
für die Kommunikation verwende.Wie überschreibt man die Verschlüsselungsliste, die von Android bei Verwendung von HttpsURLConnection an den Server gesendet wird?
Ich weiß, dass ich setSSLSocketFactory
auf dem HttpsURLConnection
Objekt verwenden kann, um es einzurichten, ein SSLSocketFactory
zu verwenden. Dies ist nützlich, wenn ich den Trustmanager ändern möchte, der von SSLSocket
verwendet wird, der von SSLSocketFactory
zurückgegeben wird.
Ich weiß, dass im Allgemeinen diese Ciphersuite Liste bearbeitet werden kann mit einem SSLParameters
Objekt und übergibt es an oder SSLEngine
Objekte mit den Methoden, die sie bereitstellen.
ABER die SSLSocketFactory
scheint solche Methoden nicht zu belichten!
Ich kann nicht einen Weg finden, die SSLParameters
der zurück SSLSocket
Objekte durch die SSLSocketFactory
ich HttpsURLConnection
Pass erstellt zu ändern.
Was ist zu tun?
Ich denke, das ist auch relevant für Java im Allgemeinen, nicht nur Android. Vielleicht gibt es einen OO Weg, es zu tun (z. B. extend SSLSocketFactory
und das zu HttpsURLConnection
?)
kleine Genauigkeit: Dies ist javax.net.ssl.SSLSocketFactory und nicht eine SSLSocketFactory. –
Was ist SSLPinningTrustManager hier? ist "SSLPinningTrustManager" ist eine benutzerdefinierte Klasse wie Android Studio nicht in der Lage ist zu lösen, wenn ja, was könnte dann Ersatz sein? – Amritesh
@Amritesh vielleicht 'SSLPinningTrustManager' bezieht sich auf [diese Implementierung] (https://github.com/duladissa/SSLPinnigExample/blob/master/app/src/main/java/com/litereamz/sslpinnigexample/util/SSLPinningTrustManager.java) –