Consenti ai dispositivi Android 4 di connettersi ad Apache HTTPS


1

Di recente ho rinnovato il certificato del sito HTTPS sul server che conservo per un cient e, durante l'installazione, ho rafforzato le impostazioni di apache ssl, in particolare i protocolli e le cifre supportati (ad esempio, ho finalmente rimosso SSL3, ecc.)

Purtroppo, nel giro di un'ora ho ricevuto telefonate dal cliente che lamentavano un problema. Il cliente ha una base sul campo di addetti alle vendite (circa 50 in tutti gli Stati Uniti e in Canada) che utilizzano tablet Android emessi dalla società con un ordine personalizzato e un'applicazione di tracciamento dei clienti. Quell'applicazione ha smesso di funzionare e il mio client non è ora in grado di ricevere ordini. Questo è piuttosto critico, in quanto sono in ritardo di oltre $ 100.000 per l'evasione dell'ordine il giorno dopo.

La prima cosa che ho tracciato è che il nuovo certificato CA radice non è attendibile per impostazione predefinita in Android 4 (DigiCert Global Root G2). Ho installato quel certificato su un dispositivo di esempio che ho ricevuto e ora almeno Chrome può connettersi al sito. Tuttavia, l'app non è ancora in grado di connettersi al server. Genera errore "Connessione chiusa dal peer" ogni volta che tenta di comunicare con il server.

La mia ipotesi è che il problema sia con la suite di crittografia supportata - suppongo che il codice Android nativo non supporti nessuna delle cifre installate sul server. Pertanto ho ricevuto due domande finora:

  1. Quali sono le cifre che devo abilitare sul server per consentire la connessione dell'app nativa Android 4? Per quanto ne so, l'app utilizza java.net.HttpURLConnectionper connettersi per rimuovere l'host.

  2. Cos'altro devo cercare / abilitare per provare a farlo funzionare?

Tieni presente che l'aggiornamento a una versione più recente di Android non è un'opzione, poiché il costo è troppo proibitivo per il mio cliente. Oggi e domani (sabato e domenica) devo risolvere questo problema o l'intera attività del cliente è a rischio.

AGGIORNAMENTO: ecco i codici / protocolli attualmente abilitati:

SSLProtocol All -SSLv2 -SSLv3
SSLCipherSuite ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256

1
La soluzione ripristina la configurazione precedente dandoti il ​​tempo di eseguire il debug del problema. "Quali sono le cifre che devo abilitare sul server per consentire la connessione dell'app nativa Android 4?" - Le cifre che hai disabilitato.
Ramhound,

@Ramhound Heh ... più facile a dirsi che a farsi. Nella mia mente troppo zelante, ho appena cambiato il set up senza guardare o eseguire il backup di quello che era prima ...
Aleks G

Se non puoi dirci cosa hai fatto, sarà difficile aiutarti, nel tempo che hai. Ovviamente il tuo lasso di tempo non avrà alcun effetto quando ricevi una risposta.
Ramhound,

@Ramhound ovviamente, quello che capisco. Tuttavia, potrei riformulare la domanda come "Ora ho bisogno di ottenere le app Android 4 per connettersi a questo server - quali codici / protocolli devo abilitare"?
Aleks G,

1
@Ramhound Questo è un ottimo punto - ho aggiornato la domanda
Aleks G

Risposte:


1

Nota preliminare: ho un dispositivo di esempio con l'app in questione in esecuzione su di esso.

Ok, quindi dopo ore di difficoltà, in preda alla disperazione, ho iniziato a modificare le impostazioni nell'app per indirizzarle a vari altri server a cui ho accesso - e finalmente ne ho ottenuto uno, dove funzionava la connessione - quindi ho copiato il protocollo e le impostazioni di cifratura da quel server a quello in questione, hanno cambiato le impostazioni nell'app in modo che rimandino al server originale - e ha funzionato.

Per riferimento, ecco le impostazioni:

SSLProtocol all -SSLv2 -SSLv3
SSLCipherSuite EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:!DHE-RSA-AES256-GCM-SHA384:!DHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA:ECDHE-RSA-AES128-SHA:!DHE-RSA-AES256-SHA256:!DHE-RSA-AES128-SHA256:!DHE-RSA-AES256-SHA:!DHE-RSA-AES128-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES256-GCM-SHA384:AES128-GCM-SHA256:AES256-SHA256:AES128-SHA256:AES256-SHA:AES128-SHA:DES-CBC3-SHA:HIGH:!aNULL:!eNULL:!EXPORT:!DES:!MD5:!PSK:!RC4:!DHE-RSA-DES-CBC-SHA:!DHE-RSA-CAMELLIA256-SHA:!DHE-RSA-CAMELLIA128-SHA:!DHE-DSS-CBC-SHA:!DHE-RSA-DES-CBC3-SHA

Devo accontentarmi del fatto che il punteggio di SSL Labs scenda da A + ad A- poiché ho dovuto includere cifre deboli, ma questo è comprensibile. Inoltre, per qualche motivo, la connessione iniziale richiede molto tempo (diversi secondi), ma almeno gli ordini possono essere inviati :)

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.