Warum Apache SSL-Zertifikat und privaten Schlüssel in separaten Dateien speichern?

11

In der Apache mod_ssl-Dokumentation für die Anweisungen SSLCertificateFile und SSLCertificateKeyFile heißt es, dass dringend davon abgeraten wird, einen privaten Schlüssel und ein SSL-Zertifikat in derselben Datei zu speichern.

Natürlich sollte die private Schlüsseldatei sicher aufbewahrt werden. Gibt es jedoch unter der Annahme, dass dies der Fall ist, bestimmte Risiken beim Speichern eines Zertifikats in derselben Datei? Ich bin gespannt, warum dieses Verhalten unterstützt und dennoch ohne Erklärung stark entmutigt wird.

Vortura
quelle

Antworten:

15

Die SSL-Zertifikatdatei ist eine Sperre.
Die SSL-Zertifikatschlüsseldatei ist ihr Schlüssel.

Das Zusammenhalten der beiden entspricht dem Aufkleben Ihres Schlüssels auf das Schloss an Ihrer Haustür.
Wenn ein Angreifer die einzelne Datei kompromittiert, verfügt er über alles, was er benötigt, um sich erfolgreich als Ihre Website auszugeben (das Zertifikat und den privaten Schlüssel).

Dies gilt insbesondere dann, wenn Ihr SSL-Schlüssel keine Passphrase enthält (viele Webserver tun dies nicht, damit sie im Falle eines Absturzes automatisch gestartet werden können).


Was Sie durch das Trennen der Dateien verteidigen, ist ein Apache-Fehler, der dazu führt, dass der Inhalt von SSLCertificateFile(etwas, das öffentlich verfügbar sein sollte) an einen Webclient ausgegeben wird.
(Meines Wissens existiert kein solcher Fehler oder hat jemals existiert, aber Apache ist eine große, komplexe Software. Es ist durchaus möglich.)

Wenn Apache diese Datei speichert und nur das SSL-Zertifikat (die Sperre) enthält, gibt es kein Problem: Jeder erhält eine Kopie dieses Zertifikats, wenn er eine SSL-Anfrage an den Server stellt.
Wenn die Datei auch den Schlüssel enthält, haben Sie keine Chance auf Sicherheit - Ihr gesamtes Verschlüsselungsmodell ist gefährdet, und Sie müssen die Schlüssel ändern.

voretaq7
quelle
Vielen Dank, der theoretische Fehler, der dazu führt, dass der Webserver den privaten Schlüssel zusammen mit dem öffentlichen Zertifikat bereitstellt, war auch meine beste Vermutung. Ich stimme nicht wirklich zu, dass das Einfügen des Schlüssels und des Zertifikats in dieselbe Datei dem Aufkleben des Schlüssels auf die Vordertür entspricht, aber ich kann mir auch keinen guten Grund dafür vorstellen.
Vortura
1
Es ist wahrscheinlich nicht so schlimm wie das Aufkleben des Schlüssels auf die Tür - vielleicht näher daran, den Schlüssel oben auf den Türrahmen zu kleben oder einen dieser Schlüssel zum Verstecken eines Schlüssels zu verwenden :-)
voretaq7
7

Für alte Versionen von OpenSSL waren zwei separate Dateien erforderlich (öffentlich und privat). Alte Versionen anderer Krypto-Engines erforderten eine einzelne Datei (beide in derselben Datei). Im Geiste der Kompatibilität (auch bekannt als "Admin, der sich über die Inkonsistenz lustig macht und zwei Sätze von Zertifikaten pflegen muss") unterstützen die meisten jetzt beide.

Das Speichern beider Zertifikate (auch der Schlüsselkette) in einer einzigen Datei wird nicht empfohlen, da die verschiedenen Zertifikate unterschiedliche Bereiche haben. Es handelt sich eher um ein Konsistenzproblem als um ein technisches Problem, bei dem das öffentliche Zertifikat über öffentlich lesbare Dateiberechtigungen verfügen sollte und umgekehrt für private. Es besteht keine Gefahr, Ihr öffentliches Zertifikat auf Ihren Systemen unter Verschluss zu halten. Es entspricht lediglich seinem Zweck.

Chris S.
quelle