Genau genommen brauchen Sie die Kette nie, damit SSL funktioniert.
Was Sie immer brauchen, ist ein SSLCertificateFile
mit SSLCertificateKeyFile
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:
- Eingebettet in dieselbe Datei, die Sie für Ihre festgelegt haben
SSLCertificateFile
, in neue Zeilen nach dem Serverzertifikat in der richtigen Reihenfolge (der Stamm sollte sich unten befinden). Wenn Sie es so einrichten, möchten Sie SSLCertificateChainFile
auf genau die gleiche Datei verweisen wie SSLCertificateFile
.
- In einer separaten Datei, die in der
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.
/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).