Differenza tra SSLCertificateFile e SSLCertificateChainFile?


35

Normalmente con un host virtuale un ssl è configurato con le seguenti direttive:

Listen 443 

SSLCertificateFile /home/web/certs/domain1.public.crt
SSLCertificateKeyFile /home/web/certs/domain1.private.key
SSLCertificateChainFile /home/web/certs/domain1.intermediate.crt

Da: per abilitare SSL per un singolo dominio su un server con vhosts multipli, questa configurazione funzionerà?

Qual è la differenza tra SSLCertificateFilee SSLCertificateChainFile? Il client ha acquistato una chiave CA da GoDaddy. Sembra che GoDaddy fornisca solo un SSLCertificateFile(file .crt) e un SSLCertificateKeyFile (file .key) e non su SSLCertificateChainFile.

Mio ssl continuerà a funzionare senza un SSLCertificateChainFilepercorso specificato?

Inoltre, esiste un percorso canonico in cui posizionare questi file?


1
Il più comunemente pone vedo persone mettendo i file CERT in /etc/ssl, /usr/local/etc/sslo in una sslspecifica directory per il sito web (ad esempio, /home/www/example.com/dataè il sito poi home/www/example.com/sslha i CERT).
Chris S,

Risposte:


49

A rigor di termini, non è mai necessaria la catena per il funzionamento di SSL.

Ciò di cui hai sempre bisogno è un SSLCertificateFilecon un SSLCertificateKeyFilecontenente la chiave corretta per quel certificato.

Il problema è che se tutto ciò che dai ad Apache è il certificato, tutto ciò che deve dare ai client di connessione è il certificato, che non racconta l'intera storia di quel certificato SSL. Sta dicendo: "Sono firmato da qualcuno, ma non ho intenzione di dirtelo".

Questo di solito funziona bene, poiché la maggior parte dei sistemi client ha un grande archivio di certificati CA (sia root che intermedi) che può verificare attraverso una relazione di firma corrispondente per stabilire la fiducia. Tuttavia, a volte questo non funziona; molto spesso il problema che incontrerai è un client che non detiene il certificato per una CA intermedia che ha firmato il tuo certificato.

Ecco dove entra in gioco la catena; consente ad Apache di mostrare esattamente al cliente l'aspetto della relazione di fiducia, il che può aiutare un cliente a riempire gli spazi vuoti tra il certificato, una radice di cui si fida e l'intermedio di cui non è a conoscenza. La catena può essere inclusa nella configurazione in due modi:

  • Incorporato nello stesso file impostato per il tuo SSLCertificateFile, su nuove righe dopo il certificato del server in ordine (la radice dovrebbe essere in fondo). Se lo configuri in questo modo, ti consigliamo di SSLCertificateChainFilepuntare esattamente allo stesso file di SSLCertificateFile.
  • In un file separato configurato nella SSLCertificateChainFiledirettiva; il certificato CA che ha emesso il certificato del server dovrebbe essere il primo nel file, seguito da tutti gli altri nella radice.

Controlla il file del certificato che hai adesso - Scommetto che non ha incluso i dati della catena. Che di solito funziona bene, ma alla fine causerà un problema con alcuni browser o altro.


2
Penso che "di solito funzioni bene" in realtà non si applica più ai certificati GoDaddy, se l'intermedio non è incluso. Non sono nemmeno sicuro che si applichi più a ragazzi come Verisign e Thawte, in realtà, dal momento che si sono spostati per rendere i siti più distanti da quelli di base inclusi nel browser. Immagino che renda più facile la revoca, poiché è più semplice uccidere gli intermedi.
cjc,

"Incorporato nel file SSLCertificate": avrei voluto che funzionasse, ma non sembra, e non è menzionato nei documenti. La tua catena deve essere inserita SSLCertificateChainFile.
Steve Kehlet,

@SteveKehlet Hai ragione sul fatto che non è documentato, ma in passato ha funzionato correttamente: come hai formattato il file All-in-One?
Shane Madden

1
@SteveKehlet In realtà, hai ragione, mi sono ricordato male; il modo in cui l'avevo impostato per un singolo file era di avere entrambi SSLCertificateFilee SSLCertificateChainFileindicato lo stesso file combinato, che funziona - ho modificato la mia risposta per correggerlo.
Shane Madden

@ShaneMadden Bellissimo! Funziona! Grazie mille per averlo capito.
Steve Kehlet,


4

In realtà, GoDaddy ti offre una catena intermedia:

http://support.godaddy.com/help/5238

Ecco qualche altra discussione.

http://support.godaddy.com/help/868/what-is-an-intermediate-certificate

L'email di GoDaddy che spiega come scaricare il nuovo certificato conterrà anche informazioni sul file del certificato intermedio. È da qualche parte verso il fondo, forse dopo che i tuoi occhi si sono glassati dalla verbosità e dal rialzo.

In termini di cosa accadrà se non includi la direttiva SSLCertificateChainFile corretta: visualizzerai un grande avviso rosso nel tuo browser perché il tuo sito SSL non verrà convalidato nei browser, poiché non possono seguire la catena di certificati dal tuo sito attenti a uno di proprietà di un'autorità di certificazione di cui il browser è a conoscenza.


2

Vorrei aggiungere alle precedenti buone risposte su SSLCertificateChainFile che anche l'ordine dei certificati in quel file è importante. I client basati su OpenSSL risolveranno l'ordine da soli, ma i client basati su gnutls falliranno su una catena con un ordine errato.

Prova l'ordinazione con gnutls-cli, come

gnutls-cli --x509cafile /etc/ssl/certs/ca-certificates.crt -p https wwwsec.cs.uu.nl

dove /etc/ssl/certs/ca-certificates.crt è la posizione in cui la tua distribuzione inserisce i certificati combinati.

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.