Sto sviluppando un'app per Android che invia alcune richieste HTTPS al nostro server Web (Linux, Nginx, SSL zertificato da "Let's Encrypt").
Le richieste hanno funzionato bene sui miei dispositivi di test (Android 4.2.2 e Android 6.0.1), ma su un altro dispositivo (5.1.1) la richiesta ha lanciato l'eccezione:
Cannot verify hostname [my_domain]
Guardando il certificato nel mio browser, sembra funzionare bene, usando la seguente connessione:
TLS 1.2 AES_128_GCM ECDHE_RSA
Dopo aver cercato sul Web aiuto, alla fine ho provato ad applicare un SSLSocketFactory personalizzato, che costringe il client a utilizzare Cipher Suite TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (che è stato utilizzato da i miei altri dispositivi di prova, a cui ha funzionato la richiesta).
Per farla breve: la richiesta poi ha funzionato su qualsiasi dispositivo, che indica che è colpa dei client che la connessione non ha avuto successo.
Quindi ora alle mie domande:
-
Perché la verifica SSL funziona su alcuni dispositivi Android, ma su alcuni no?
-
Perché l'eccezione dice che il hostname non può essere verificato , mentre il certificato è valido e il nome host indicato nel certificato è quello giusto?
-
È sbagliato associare le richieste a una suite di crittografia specifica? (Osservando quegli elenchi , la suite di cifratura fornita dovrebbe essere disponibile su tutte le necessarie Dispositivi Android (4.1.0 e versioni successive))
Sono abbastanza nuovo in SSL e non vedo l'ora di ricevere una risposta che possa aiutarmi a capire questo.