Durante la negoziazione TLS, i client inviano un elenco di crittografi supportati al server, il server ne sceglie uno e inizia la crittografia. Voglio cambiare questo cifrario inviato al server da Android, quando sto usando HttpsURLConnection
per la comunicazione.Come sovrascrivere il cifrario inviato al server da Android quando si utilizza HttpsURLConnection?
So che posso usare setSSLSocketFactory
sull'oggetto HttpsURLConnection
per configurarlo per utilizzare un SSLSocketFactory
. Ciò è utile quando voglio cambiare il trustmanager ecc utilizzato dallo SSLSocket
restituito dallo SSLSocketFactory
.
So che in generale questa lista ciphersuite può essere modificato utilizzando un oggetto SSLParameters
e passarlo al SSlsocket
o SSLEngine
oggetti utilizzando i metodi che forniscono.
MA il SSLSocketFactory
non sembra esporre tali metodi!
non riesco a trovare un modo per cambiare la SSLParameters
degli restituiti SSLSocket
oggetti creati dal SSLSocketFactory
passo a HttpsURLConnection
.
Cosa fare?
Credo che questo è anche rilevante per Java in generale, non solo Android. Forse c'è un modo OO per farlo (ad esempio, estendere e fornire quello a HttpsURLConnection
?)
piccola precisione: questo è javax.net.ssl.SSLSocketFactory e non apatche SSLSocketFactory. –
Che cos'è SSLPinningTrustManager qui? "SSLPinningTrustManager" è una classe definita dall'utente poiché Android Studio non è in grado di risolverlo, in caso affermativo, quindi quale potrebbe essere la sostituzione? – Amritesh
@Amritesh forse 'SSLPinningTrustManager' fa riferimento a [questa implementazione] (https://github.com/duladissa/SSLPinnigExample/blob/master/app/src/main/java/com/litedreamz/sslpinnigexample/util/SSLPinningTrustManager.java) –