Normalerweise wird bei einem virtuellen Host ein 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
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 eine SSLCertificateFile
(.crt-Datei) und eine SSLCertificateKeyFile (.key-Datei) bereitstellt und nicht at SSLCertificateChainFile
.
Funktioniert mein ssl auch ohne SSLCertificateChainFile
Pfadangabe?
Gibt es auch einen kanonischen Pfad, in dem diese Dateien abgelegt werden sollen?
apache-2.2
ssl
chrisjlee
quelle
quelle
/etc/ssl
,/usr/local/etc/ssl
sind oder in einemssl
für die Website spezifischen Unterverzeichnis (z. B./home/www/example.com/data
hat die Website dannhome/www/example.com/ssl
die Zertifikate).Antworten:
Genau genommen brauchen Sie die Kette nie, damit SSL funktioniert.
Was Sie immer brauchen, ist ein
SSLCertificateFile
mitSSLCertificateKeyFile
dem richtigen Schlüssel für dieses Zertifikat.Das Problem ist, dass, wenn Sie Apache nur das Zertifikat geben, es für die Verbindung mit Clients nur das Zertifikat ist, das nicht die ganze Geschichte über dieses SSL-Zertifikat erzählt. Es heißt: "Ich bin von jemandem unterschrieben, aber ich werde Ihnen nichts darüber erzählen."
Dies funktioniert normalerweise einwandfrei, da die meisten Client-Systeme über einen großen Bestand an CA-Zertifikaten (sowohl Root- als auch Intermediate-Zertifikate) verfügen, die auf eine übereinstimmende Signaturbeziehung überprüft werden können, um Vertrauen herzustellen. Manchmal funktioniert dies jedoch nicht. Meistens ist das Problem, auf das Sie stoßen, ein Client, der nicht über das Zertifikat einer Zwischenzertifizierungsstelle verfügt, die Ihr Zertifikat signiert hat.
Hier kommt die Kette ins Spiel. Damit kann Apache dem Client genau zeigen, wie die Vertrauensbeziehung aussieht. Auf diese Weise kann ein Client die Lücken zwischen Ihrem Zertifikat, dem Stamm, dem er vertraut, und dem Zwischenprodukt, das er nicht kennt, ausfüllen. Die Kette kann auf zwei Arten in Ihre Konfiguration aufgenommen werden:
SSLCertificateFile
, in neue Zeilen nach dem Serverzertifikat in der richtigen Reihenfolge (der Stamm sollte sich unten befinden). Wenn Sie es so einrichten, möchten SieSSLCertificateChainFile
auf genau die gleiche Datei verweisen wieSSLCertificateFile
.SSLCertificateChainFile
Direktive konfiguriert ist ; Das CA-Zertifikat, das das Serverzertifikat ausgestellt hat, sollte an erster Stelle in der Datei stehen, gefolgt von allen anderen im Stammverzeichnis.Überprüfen Sie die Zertifikatsdatei, die Sie jetzt haben - ich wette, dass die Daten der Kette nicht enthalten sind. Was normalerweise gut funktioniert, aber irgendwann Probleme mit dem einen oder anderen Browser verursachen wird.
quelle
SSLCertificateChainFile
.SSLCertificateFile
undSSLCertificateChainFile
auf dieselbe kombinierte Datei zu verweisen, was funktioniert. Meine Antwort wurde bearbeitet, um dies zu korrigieren.Hier ist eine ziemlich gute Erklärung für die Unterschiede und die beobachtbaren Auswirkungen zwischen der Wahl eines gegen den anderen:
https://stackoverflow.com/questions/1899983/difference-between-sslcacertificatefile-and-sslcertificatechainfile
quelle
Tatsächlich gibt Ihnen GoDaddy eine Zwischenkette:
http://support.godaddy.com/help/5238
Hier ist noch eine Diskussion.
http://support.godaddy.com/help/868/what-is-an-intermediate-certificate
Die E-Mail von GoDaddy, in der Sie erfahren, wie Sie Ihr neues Zertifikat herunterladen können, enthält auch Informationen zur Zwischenzertifikatsdatei. Es ist irgendwo in Richtung Boden, vielleicht nachdem Ihre Augen von der Redewendung und dem Upselling glasig geworden sind.
Was passiert, wenn Sie nicht die richtige SSLCertificateChainFile-Direktive einfügen? In Ihrem Browser wird eine große rote Warnung angezeigt, da Ihre SSL-Site in Browsern nicht validiert wird, da sie der Zertifikatskette Ihrer Site nicht folgen kann cert an eine Zertifizierungsstelle, die dem Browser bekannt ist.
quelle
Zu den bisherigen guten Antworten zum SSLCertificateChainFile möchte ich hinzufügen, dass die Reihenfolge der Zertifikate in dieser Datei ebenfalls wichtig ist. OpenSSL-basierte Clients sortieren die Reihenfolge selbst, aber gnutls-basierte Clients schlagen in einer Kette mit der falschen Reihenfolge fehl.
Testen Sie die Bestellung mit gnutls-cli, wie
Dabei ist /etc/ssl/certs/ca-certificates.crt der Speicherort, an dem Ihre Distribution die kombinierten Zertifikate ablegt.
quelle