Podczas negocjowania TLS klienci wysyłają listę obsługiwanych szyfrów do serwera, serwer wybiera jeden i rozpoczyna szyfrowanie. Chcę zmienić listę szyfrowaną wysyłaną na serwer przez Androida, gdy używam komunikacji HttpsURLConnection
.Jak zastąpić listę szyfrowaną wysyłaną na serwer przez system Android podczas korzystania z funkcji HttpsURLConnection?
Wiem, że mogę użyć obiektu setSSLSocketFactory
na obiekcie HttpsURLConnection
, aby skonfigurować go do korzystania z SSLSocketFactory
. Jest to przydatne, gdy chcę zmienić menedżera zaufania itp. Używanego przez SSLSocket
zwróconego przez SSLSocketFactory
.
Wiem, że na ogół tę listę szyfrów można edytować przy użyciu obiektu SSLParameters
i przekazywać do obiektów SSlsocket
lub SSLEngine
przy użyciu metod, które udostępniają.
ALE SSLSocketFactory
wydaje się nie eksponować takich metod!
nie mogę znaleźć sposób na zmianę SSLParameters
zwróconych SSLSocket
obiektów stworzonych przez SSLSocketFactory
I przechodzą do HttpsURLConnection
.
Co robić?
Podejrzewam, że dotyczy to również Javy, nie tylko Androida. Może istnieje sposób OO (np. Rozszerzenie SSLSocketFactory
i dostarczenie go do HttpsURLConnection
?)
Mała precyzja: to jest javax.net.ssl.SSLSocketFactory, a nie apatche SSLSocketFactory. –
Co to jest SSLPinningTrustManager? to "SSLPinningTrustManager" jest klasą zdefiniowaną przez użytkownika, ponieważ Android Studio nie jest w stanie rozwiązać, jeśli tak, to co może zastąpić? – Amritesh
@Arritesh może "SSLPinningTrustManager" odnosi się do [tej implementacji] (https://github.com/duladissa/SSLPinnigExample/blob/master/app/src/main/java/com/litedreamz/sslpinnigexample/util/SSLPinningTrustManager.java) –