Frage Unterschied zwischen SSLCertificateFile und SSLCertificateChainFile?


Normalerweise wird bei einem virtuellen Host eine ssl mit den folgenden Anweisungen eingerichtet:

Listen 443 

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

Von:  Wird diese Konfiguration zum Aktivieren von SSL für eine einzelne Domäne auf einem Server mit mehreren Vhosts verwendet?

Was ist der Unterschied zwischen SSLCertificateFile und SSLCertificateChainFile ? Der Kunde hat einen CA-Schlüssel von GoDaddy gekauft. Es sieht so aus, als ob GoDaddy nur ein SSLCertificateFile (.crt-Datei) und eine SSLCertificateKeyFile (.key-Datei) und nicht bei SSLCertificateChainFile.

Wird meine ssl immer noch ohne a funktionieren? SSLCertificateChainFile Pfad angegeben ?

Gibt es auch einen kanonischen Pfad, wo diese Dateien platziert werden sollten?


30
2018-04-24 15:43


Ursprung


Die häufigsten Orte, an denen ich sehe, dass Leute die Cert-Dateien hochladen, sind in /etc/ssl, /usr/local/etc/ssloder in einem ssl Unterverzeichnis spezifisch für die Website (z. B. /home/www/example.com/data hat die Website dann home/www/example.com/ssl hat die Zertifikate). - Chris S


Antworten:


Genau genommen brauchen Sie die Kette nicht, damit SSL funktioniert.

Was du immer tust brauchen ist ein SSLCertificateFile mit einer SSLCertificateKeyFile enthält den richtigen Schlüssel für dieses Zertifikat.

Das Problem ist, dass, wenn Sie Apache nur das Zertifikat geben, das Zertifikat nur den Zertifikaten übergeben wird - was nicht die ganze Geschichte über dieses SSL-Zertifikat aussagt. Es heißt: "Ich bin von jemandem unterschrieben, aber ich werde es dir nicht erzählen".

Dies funktioniert in der Regel gut, da die meisten Client-Systeme eine große Menge an CA-Zertifikaten (Root- und Intermediate-Zertifikate) aufweisen, die für eine übereinstimmende Signaturbeziehung überprüft werden können, um Vertrauen herzustellen. Manchmal funktioniert das jedoch nicht. In den meisten Fällen handelt es sich um einen Client, der nicht über das Zertifikat für eine Zwischenzertifizierungsstelle verfügt, die Ihr Zertifikat signiert hat.

Dort kommt die Kette an; Dadurch kann Apache dem Client genau zeigen, wie die Vertrauensbeziehung aussieht. Dies kann einem Client dabei helfen, die Lücken zwischen Ihrem Zertifikat, einem Stamm, dem sie vertrauen, und dem Zwischenprodukt, das sie nicht kennen, auszufüllen. Die Kette kann auf zwei Arten in Ihre Konfiguration aufgenommen werden:

  • Eingebettet in die gleiche Datei, die Sie für Ihre festgelegt haben SSLCertificateFile, in neuen Zeilen nach dem Serverzertifikat in der Reihenfolge (der Stamm sollte unten sein). Wenn Sie es so einrichten, werden Sie wollen SSLCertificateChainFile zeigte auf genau die gleiche Datei wie SSLCertificateFile.
  • In einer separaten Datei konfiguriert in der SSLCertificateChainFile Richtlinie; Das Zertifizierungsstellenzertifikat, das das Zertifikat des Servers ausgestellt hat, sollte in der Datei an erster Stelle stehen, gefolgt von allen anderen Benutzern im Stammverzeichnis.

Überprüfen Sie die Zertifikatsdatei, die Sie jetzt haben - ich wette, dass die Kettendaten nicht enthalten sind. Was normalerweise gut funktioniert, wird aber irgendwann ein Problem mit irgendeinem Browser verursachen.


43
2018-04-24 15:51



Ich denke, "funktioniert in der Regel gut" gilt nicht mehr für GoDaddy-Zertifikate, wenn das Intermediate nicht enthalten ist. Ich bin mir nicht einmal sicher, ob das für Leute wie Verisign und Thawte tatsächlich gilt, da sie sich bewegt haben, um die Site von den Basis-Browsern, die im Browser enthalten sind, zu entfernen. Ich kann mir vorstellen, dass dies den Widerruf erleichtert, da es einfacher ist, die Zwischenprodukte zu töten. - cjc
"Eingebettet in die SSLCertificateFile": Ich wünschte, das würde funktionieren, aber es scheint nicht und wird nicht in den Dokumenten erwähnt. Deine Kette muss reingelegt werden SSLCertificateChainFile. - Steve Kehlet
@SteveKehlet Sie haben recht, dass es nicht dokumentiert ist, aber ich hatte es in der Vergangenheit erfolgreich ausgeführt - wie haben Sie die All-in-One-Datei formatiert? - Shane Madden♦
@SteveKehlet Eigentlich hast du recht, ich erinnerte mich falsch; Die Art, wie ich es für eine einzelne Datei eingerichtet hatte, bestand darin, beides zu haben SSLCertificateFile und SSLCertificateChainFile zeigte auf die gleiche kombinierte Datei, die funktioniert - meine Antwort bearbeitet, um das zu korrigieren. - Shane Madden♦
@ShaneMadden Schön! Es klappt! Vielen Dank, dass Sie das herausgefunden haben. - Steve Kehlet


Hier ist eine ziemlich gute Erklärung für die Unterschiede sowie die beobachtbaren Auswirkungen zwischen der Auswahl eines gegen das andere:

https://stackoverflow.com/questions/1899983/difference-between-sslcacertificatefile-and-sslcertificatechainfile


4
2018-04-24 15:45



Ah sollte SO überprüft haben. Vielen Dank. - chrisjlee


Tatsächlich gibt GoDaddy Ihnen eine Zwischenkette:

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

Hier ist etwas mehr Diskussion.

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

Die E-Mail von GoDaddy, die Ihnen mitteilt, wie Sie Ihr neues Zertifikat herunterladen, enthält auch Informationen zur Zwischenzertifikatdatei. Es ist irgendwo auf dem Weg nach unten, vielleicht, nachdem deine Augen von der Wortwahl und dem Upselling übergossen sind.

In Bezug darauf, was passieren wird, wenn Sie die richtige SSLCertificateChainFile-Direktive nicht verwenden: In Ihrem Browser wird eine große rote Warnung angezeigt, da Ihre SSL-Site in Browsern nicht validiert wird, da sie nicht der Zertifikatskette Ihrer Site folgen kann zu einer Zertifizierungsstelle, die der Browser kennt.


4
2018-04-24 15:51





Ich möchte zu den vorherigen guten Antworten über die SSLCertificateChainFile hinzufügen, dass die Reihenfolge der Zertifikate in dieser Datei auch wichtig ist. OpenSSL-basierte Clients werden die Bestellung selbst sortieren, aber basierend auf Kunden wird eine Kette mit der falschen Reihenfolge fehlschlagen.

Testen Sie die Bestellung mit gnutls-cli, like

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

wo /etc/ssl/certs/ca-certificates.crt ist der Ort, an den Ihre Distribution die kombinierten Zertifikate stellt.


2
2017-09-29 20:39