SSLCertificateChainFile Deprecation Warning für Apache 2.4.8+

14

Wir haben ein SSL-Zertifikat für unsere Website von Network Solutions. Nach dem Upgrade von Apache / OpenSSL auf Version 2.4.9 wird beim Starten von HTTPD die folgende Warnung angezeigt:

AH02559: The SSLCertificateChainFile directive (/etc/httpd/conf.d/ssl.conf:105) is deprecated, SSLCertificateFile should be used instead

Laut dem Apache-Handbuch für mod_ssl ist dies tatsächlich der Fall:

SSLCertificateChainFile ist veraltet

SSLCertificateChainFile wurde mit Version 2.4.8 obsolet, als SSLCertificateFile erweitert wurde, um auch Zwischenzertifizierungsstellenzertifikate aus der Serverzertifikatdatei zu laden.

In der Dokumentation zu SSLCertificateFile sah es so aus, als müsste ich nur meinen Aufruf von SSLCertificateChainFile durch SSLCertificateFile ersetzen .

Diese Änderung hat meine ssl.conf davon abgewendet:

SSLCertificateFile /etc/ssl/STAR.EXAMPLE.COM.crt
SSLCertificateKeyFile /etc/ssl/server.key
SSLCertificateChainFile /etc/ssl/Apache_Plesk_Install.txt

dazu:

SSLCertificateFile /etc/ssl/STAR.EXAMPLE.COM.crt
SSLCertificateFile /etc/ssl/Apache_Plesk_Install.txt
SSLCertificateKeyFile /etc/ssl/server.key

... aber das geht nicht. Apache weigert sich einfach, ohne Fehlermeldung zu starten.

Ich bin mir nicht sicher, was ich sonst noch versuchen soll, da ich mit mod_ssl- oder SSL-Zertifikaten im Allgemeinen nicht so vertraut bin. Ich erinnere mich, dass wir die Datei Apache_Plesk_Install.txt für Internet Explorer hinzufügen mussten , um keine SSL-Warnung auf unserer Site zu erhalten, aber ansonsten habe ich keine Ahnung.

Jede Hilfe wäre sehr dankbar. Vielen Dank.

DOOManiac
quelle
6
Sie müssen alle Zertifikate, das
Clientzertifikat

Antworten:

9

Ich hatte das gleiche Problem. Ich habe gerade diese Zeilen ersetzt/etc/apache2/site-enabled/default-ssl.conf

SSLCertificateFile    /etc/ssl/certs/domain.crt
SSLCertificateKeyFile /etc/ssl/private/domain.key
#SSLCertificateChainFile /etc/apache2/ssl.crt/chain.crt

Wie Sie sehen, habe ich gerade das auskommentiert SSLCertificateChainFile. Dann, als ich denselben Fehler wie Sie sah, verkettete ich den Inhalt von my chain.crt am Ende von domain.crt, wie folgt:

root@host~: cat /etc/apache2/ssl.crt/chain.crt >> /etc/ssl/certs/domain.crt

Und es funktionierte wie ein Zauber.

user306141
quelle
Laut den Kommentaren in apache config ist dies auch vollkommen gültig: "Alternativ # kann die referenzierte Datei dieselbe sein wie SSLCertificateFile #, wenn die CA-Zertifikate der Einfachheit halber direkt an das Serverzertifikat # angehängt werden."
PeanutPower
6

Ich verwende das folgende Skript, um ein Zertifikat-Bundle zu erstellen, das das verkettete Zertifikat enthält.

#!/bin/sh
#
# Convert PEM Certificate to ca-bundle.crt format
#

test ! $1 && printf "Usage: `basename $0` certificate" && exit 1

# Friendly Name and Underline Friendly Name with equal signs
openssl x509 -in $1 -text -noout | sed -e 's/^  *Subject:.*CN=\([^,]*\).*/\1/p;t  c' -e 'd;:c' -e 's/./=/g'
# Output Fingerprint and swap = for :
openssl x509 -in $1 -noout -fingerprint | sed -e 's/=/: /'
# Output PEM Data:
echo 'PEM Data:'
# Output Certificate
openssl x509 -in $1
# Output Certificate text swapping Certificate with Certificate Ingredients
openssl x509 -in $1 -text -noout | sed -e 's/^Certificate:/Certificate Ingredients:/'

Beginnen Sie mit dem Serverzertifikat und durchlaufen Sie nacheinander alle Zwischenzertifikate in der Zertifikatskette, um zum Stammzertifikat zurückzukehren.

./bundle.sh myserver.crt >myserver.chain
./bundle.sh intermediate.crt >>myserver.chain
./bundle.sh root.crt >>myserver.chain

Dabei werden die entsprechenden Zertifikatnamen durch Ihren tatsächlichen Zertifikatnamen ersetzt.

sweetfa
quelle
4

Haben Sie das Standortzertifikat, die Zwischenprodukte sowie eine Datei, die in der Anweisung SSLCertificateFile angegeben ist, und den privaten Schlüssel, der in einer Datei verkettet ist, die in SSLCertificateKeyFile angegeben ist, und Sie sollten alle festgelegt sein. Sie könnten zwar den privaten Schlüssel in der gleichen Datei haben wie die Zertifikate, aber davon wird abgeraten. Weitere Informationen finden Sie in der Dokumentation:
http://httpd.apache.org/docs/current/mod/mod_ssl.html#sslcertificatefile
Ich würde empfehlen, dass das Stammzertifizierungsstellenzertifikat nicht Teil der SSLCertificateFile ist, da der Client die haben sollte Stammzertifizierungsstellenzertifikat als vertrauenswürdig, damit die Zertifikatüberprüfung wie vorgesehen funktioniert.
Wenn in den Apache-Fehlerprotokollen nichts enthalten ist, kann das Fehlerprotokoll auf eine feinere Granularität eingestellt werden als inhttp://httpd.apache.org/docs/current/mod/core.html#loglevel

Khanna111
quelle
1
"Ja wirklich?" Der private Schlüssel? Das scheint eine schlechte Idee zu sein. Ich frage mich nur, denn ich gehe davon aus, dass dies privat ist.
SSL
2
Sie haben Recht - die Dinge haben sich geändert gegenüber dem, woran ich mich aus der Dokumentation erinnere, und auch gegenüber der Dokumentation, die in der Datei httpd-ssl.conf für diese beiden Anweisungen vorhanden ist. Obwohl dies zulässig ist, wird davon abgeraten, den privaten Schlüssel in der von SSLCertificateFile angegebenen Datei zu haben. Die Antwort wurde nun bearbeitet, um dieser Tatsache Rechnung zu tragen.
Khanna111