Ich versuche, die Grundlagen der Apache-Serverkonfiguration zu erlernen, und frage mich, wie gültig SSL-Direktiven in verschiedenen Bereichen von Apache sind.
Diese Richtlinien;
SSLEngine on
SSLCertificateFile "/etc/apache2/ssl/apache.crt"
SSLCertificateKeyFile "/etc/apache2/ssl/apache.key"
SSLRequireSSL ...
Wo können sie platziert werden? Nur im Abschnitt „VirtualHost“? Wenn ich sie im globalen Bereich einfüge, funktionieren sie dann?
Entschuldigen Sie, wenn diese Frage irgendwie aus dem Kontext gerissen ist, ich habe immer noch einige umfassende Probleme mit Apache :)
Antwort1
Willkommen in der Welt von Apache! Die erste Lektion besteht darin, zu lernen, wie man die hervorragende Dokumentation liest. In der Apache-Dokumentation hat jede Direktive eineKontextAbschnitt, der angibt, wo in den Konfigurationsdateien des Servers die Anweisung zulässig ist. Sie befindet sich direkt unter den Zeilen Syntax:
und Default:
.
ServerkonfigurationDies bedeutet, dass die Direktive in den Serverkonfigurationsdateien (z. B.
httpd.conf
) verwendet werden darf, jedoch nicht innerhalb von -<VirtualHost>
oder<Directory>
-Containern. In Dateien ist sie.htaccess
überhaupt nicht zulässig.virtueller Host
<VirtualHost>
Dieser Kontext bedeutet, dass die Direktive in Containern in den Serverkonfigurationsdateien erscheinen kann .VerzeichnisEine in diesem Kontext als gültig gekennzeichnete Anweisung kann innerhalb von -, -, -, - und -Containern in den Serverkonfigurationsdateien verwendet werden ,
<Directory>
vorbehaltlich der in den Konfigurationsabschnitten beschriebenen Einschränkungen.<Location>
<Files>
<If>
<Proxy>
.htaccessWenn eine Direktive in diesem Kontext gültig ist, bedeutet das, dass sie in verzeichnisspezifischen .htaccess-Dateien erscheinen kann. Sie wird jedoch möglicherweise nicht verarbeitet, abhängig von den aktuell aktiven Overrides.
MitSSLEngine
,SSLCertificateFile
,SSLCertificateKeyFile
die Kontexte sind Serverkonfiguration und virtueller Host. Das bedeutet, dass Sie sie für den gesamten Server angeben und diese Standardkonfiguration auch überschreiben können <VirtualHost>
.
DerSSLRequireSSL
Richtlinieist andererseits in Verzeichnis- und .htaccess-Kontexten zulässig. Das bedeutet, dass Sie durch Platzieren in einem Verzeichnis angeben können, dass Nicht-TLS-Verbindungen nicht zugelassen werden sollen, selbst wenn es virtuelle Hosts gibt, die nur HTTP verwenden und andernfalls dieses Verzeichnis bedienen würden.
Heutzutage sollte man jedoch alles mit TLS schützen, was SSLRequireSSL
unnötig ist. Leiten Sie alle HTTPs auf HTTPS um und erzwingen Sie dies durch einHTTP Strikte Transportsicherheit(HSTS)-Richtlinie (RFC 6797).