Come si corregge una catena SSL incompleta


29

Ho installato un certificato SSL Go Daddy e funziona bene ovunque tranne Android.

https://www.ssllabs.com/ssltest/analyze.html afferma che la catena è incompleta e ho letto sullo stack overflow che una catena SSL nell'ordine sbagliato non funzionerà su Android.

Ma come lo metto in ordine? Sul mio server? Lo stesso certificato SSL deve essere modificato nuovamente? Spostare le cose su FTP?

Risposte:


19

In seguito alla risposta di zakjan, ho avuto un problema quando ho provato a usare jquery per fare una richiesta AJAX sul mio server recentemente sicuro, in una visualizzazione web Android. Funzionava nel browser, ma non nella mia app.

Ho usato questo sito: https://certificatechain.io/

Ho incollato il testo del mio file .crt firmato che sono tornato da Comodo (positiveSSL) e mi ha restituito una concatinazione di tutto ciò di cui avevo bisogno. L'ho salvato come mio dominio + "chain.crt" (vedi sotto)

Quindi, nelle mie configurazioni di Apache, ho inserito qualcosa del genere per quel particolare host virtuale:

SSLEngine On
SSLCertificateFile /etc/ssl/localcerts/example_com.crt
SSLCertificateKeyFile /etc/ssl/localcerts/example.com.key
SSLCACertificateFile /etc/ssl/localcerts/example.com.chain.crt

Successivamente, la visualizzazione Web della mia app Android non ha avuto problemi a utilizzare ajax per pubblicare sul mio server. L'ho provato su 2 dispositivi del mondo reale, uno in esecuzione 2.3.4, uno in esecuzione 4.qualcosa. E sull'emulatore in esecuzione 2.3. Tutto ha funzionato.

Spero che aiuti.


1
La chiave per me era aggiungere la SSLCACertificateFiledirettiva e indirizzarla al file CA che la mia autorità mi ha dato. Non funzionerebbe se semplicemente concatenassi gli altri certificati nel mio file di certificato.
Alex W,

Negli apache precedenti SSLCertificateChainFile potrebbe essere utilizzato al posto di SSLCACertificateFile (nel caso in cui tu cerchi questa chiave nelle tue configurazioni e non riesca a trovarla).
dr0i

Incredibilmente, ma la risposta di @Richard utilizza il sito certificatechain.io e il sito dice "... ispirato al risolutore di catene di cert di Jan Žák", che ha risposto a questa domanda qui: superuser.com/a/866523/92500 , grazie @zakjan!
Andrés Morales,

L' SSLCACertificateFileera la linea che ho perso. Inizialmente supponevo che la mia CA fosse troppo nuova perché SSL funzionava quando richiesto da alcuni browser / sistemi operativi, ma non da altri. L'uso di decoder.link/sslchecker mi ha aiutato a chiarire che la mia configurazione era sbagliata e questa risposta aveva la soluzione. Grazie!!
josephdpurcell,

9

La catena era nel file crt, che SSL originale stava funzionando.

Per GoDaddy c'è un secondo certificato - gd_bundle.crt

Copia queste informazioni e aggiungile al crt installato sul server.

Quindi il crt originale sul server aveva 1 certificato, e dopo ne avrà 3 sullo stesso file. Questa è la catena.

Ho ancora contiene problemi di ancoraggio in catena su ssllabs.com ma questo non è un problema, solo un'opzione per lasciare dentro o fuori - secondo - /security/24561/ssltest-chain-issues -contains-ancoraggio / 24566 # 24566


2
Per eliminare i problemi relativi alla catena, rimuovere l'ultimo certificato da gd_bundle.crt
sanmai,

7

È possibile risolvere manualmente il problema incompleto della catena di certificati concatenando tutti i certificati dal certificato al certificato radice attendibile (esclusivo, in questo ordine), per evitare tali problemi. Si noti che il certificato radice attendibile non dovrebbe essere presente, poiché è già incluso nell'archivio certificati radice del sistema.

Dovresti essere in grado di recuperare i certificati intermedi dall'emittente e concatenerli insieme da solo. A proposito, ho scritto uno script per automatizzare la procedura, ci vuole un certificato per produrre output di certificati correttamente concatenati. https://github.com/zakjan/cert-chain-resolver


Sembra una soluzione che "induca" solo la macchina locale a pensare che il certificato sia configurato correttamente.
Alex W,

No. Il bundle del certificato di output dovrebbe essere caricato su un server, che invia il contenuto del sito Web. Ogni cliente riceverà il certificato con i suoi intermedi.
zakjan,
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.