Der Apache HTTP Server ist einer der beliebtesten Webserver. Er ist ein Open-Source- und plattformübergreifender HTTP-Server, der einen großen Prozentsatz der Internet-Websites antreibt.
Im Gegensatz zu HTTP, bei dem Anforderungen und Antworten im Klartext gesendet und zurückgegeben werden, verwendet HTTPS TLS/SSL, um die Kommunikation zwischen dem Client und dem Server zu verschlüsseln.
Die Verwendung von HTTPS über HTTP bietet viele Vorteile, z. B.:
- Alle Daten werden in beide Richtungen verschlüsselt. Infolgedessen können vertrauliche Informationen nicht gelesen werden, wenn sie abgefangen werden.
- Google Chrome und alle anderen gängigen Browser markieren Ihre Website als sicher.
- Mit HTTPS können Sie das HTTP/2-Protokoll verwenden, wodurch die Website-Leistung erheblich verbessert wird.
- Google bevorzugt HTTPS-Websites. Ihre Website wird besser platziert, wenn sie über HTTPS bedient wird.
In dieser Anleitung erfährst Du, wie Du den HTTP-Datenverkehr beim Apache HTTP Server an HTTPS umleitest.
Es gibt mehrere Möglichkeiten, beim Apache auf HTTPS umzuleiten. Wenn Du Root-Zugriff auf den Linux-Server hast, auf dem Apache ausgeführt wird, wäre es natürlich der bessere Weg, die Umleitung in der Konfigurationsdatei des virtuellen Hosts der Domäne einzurichten. Andernfalls kannst Du die Umleitung in der Datei (.htaccess)
der Domäne einrichten.
Umleiten von HTTP zu HTTPS mithilfe des virtuellen Hosts
Apache Virtual Hosts definiert die Einstellungen einer oder mehrerer Domänen, die auf dem Server gehostet werden. In der Richtlinie für den virtuellen Host kannst Du den Stamm des Standortdokuments (das Verzeichnis, das die Websitedateien enthält) angeben, eine separate Sicherheitsrichtlinie für jede Site erstellen, verschiedene SSL-Zertifikate verwenden, die Umleitung konfigurieren und vieles mehr.
Wenn ein SSL-Zertifikat in einer Domäne installiert ist, verfügst Du in der Regel über zwei virtuelle Host-Richtlinen für diese Domäne. Die erste für die HTTP-Version der Seite auf Port 80 und die andere für die HTTPS-Version auf Port 443.
Bei Red-Hat-basierten Distributionen wie CentOS und Fedora muss im Verzeichnis:
/etc/httpd/conf.d
eine Konfigurationsdatei zum Beispiel beispiel.conf angelegt werden.
Während bei Debian und seinen Derivaten wie Ubuntu die Dateien im Verzeichnis:
/etc/apache2/sites-available
gespeichert werden. (Beispiel: beispiel.conf)
Um eine Website auf HTTPS umzuleiten, verwenden Sie die Richtlinien wie im folgenden Beispiel: "Redirect
“ gezeigt.
(Inhalt der Konfigurationsdatei),
<VirtualHost *:80> ServerAdmin webmaster@beispiel.de DocumentRoot /var/www/html/beispiel ServerName beispiel.de ServerAlias *.beispiel.de ErrorLog logs/beispiel.de-error_log CustomLog logs/beispiel.de-access_log common Redirect permanent / https://beispiel.de/ </VirtualHost> <VirtualHost *:443> ServerAdmin webmaster@beispiel.de DocumentRoot /var/www/html/beispiel ServerName beispiel.de ServerAlias www.beispiel.de ErrorLog logs/beispiel.de-error_log CustomLog logs/beispiel.de-access_log common Protocols h2 http/1.1 # SSL Configuration # Other Apache Configuration </VirtualHost>
Lassen kurz uns den Code erklären. Wir verwenden zwei virtuelle host- Richtlinien, eine für HTTP und eine für die HTTPS-Version.
VirtualHost *:80
– Der Apache-Server lauscht auf eingehende Verbindungen am Port 80 (HTTP) für die angegebene Domäne.VirtualHost *:443
– Der Apache-Server lauscht auf eingehende Verbindungen am Port 443 (HTTPS) für die angegebene Domäne.
Die Anweisungen (ServerName ServerAlias geben die Domänennamen des virtuellen Hosts an. Stelle sicher, dass Du (beispiel.de und www.beispiel.de) durch Deine Domainnamen ersetzt.
Die hervorgehobene Zeile innerhalb des virtuellen HTTP-Hosts leitet den Datenverkehr an die HTTPS-Version der Site um.
Redirect permanent / https://beispiel.de/
In der Regel möchtest Du auch die HTTPS-www-Version der Webseite auf das Nicht-www umleiten oder umgekehrt. Hier ist eine Beispielkonfiguration:
<VirtualHost *:80> ServerName beispiel.de ServerAlias www.beispiel.de Redirect permanent / https://beispiel.de/ </VirtualHost> <VirtualHost *:443> ServerName beispiel.de ServerAlias www.beispiel.de Protocols h2 http/1.1 <If "%{HTTP_HOST} == 'www.beispiel.de'"> Redirect permanent / https://beispiel.de/ </If> # SSL Configuration # Other Apache Configuration </VirtualHost>
Der Code innerhalb des virtuellen HTTPS-Hosts (die hervorgehobenen Zeilen) überprüft, ob der Anforderungsheader die www-Domäne enthält und auf die Nicht-www-Version umleitet.
Wenn Du Änderungen an den Konfigurationsdateien vornimmst, musst Du den Apache-Dienst neu starten oder laden, damit die Änderungen wirksam werden:
Debian und Ubuntu:
sudo systemctl reload apache2
CentOS
service httpd restart
Fedora:
systemctl restart httpd
Umleiten von HTTP zu HTTPS mithilfe von .htaccess
.htaccess
ist eine Konfigurationsdatei pro Verzeichnis für den Apache-Webserver. Diese Datei kann verwendet werden, um zu definieren, wie Apache Dateien aus dem Verzeichnis bereitstellt, in dem die Datei abgelegt ist, und um zusätzliche Funktionen zu aktivieren / deaktivieren.
Normalerweise wird die Datei im Stammverzeichnis der Domäne abgelegt, aber Du kannst auch andere Dateien in den Unterverzeichnissen haben..htaccess
.htaccess
Diese Methode erfordert, dass das Modul auf dem Apache-Server geladen wird. Dieses Modul wird standardmäßig auf den meisten Servern geladen. Wenn möglich, ziehe es vor, eine Umleitung im virtuellen Host zu erstellen, da dies einfacher und sicherer ist. mod_rewrite
Um den gesamten HTTP-Datenverkehr zu HTTPS umzuleiten, öffne die Stammdatei und füge den folgenden Code hinzu: .htaccess
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://beispiel.de/$1 [L,R=301]
Hier die Erläuterung des Codes:
RewriteEngine On
– aktiviert die Rewrite-Funktionen.RewriteCond %{HTTPS} off
– prüft auf HTTP-Verbindung, und wenn die Bedingung erfüllt ist, wird die nächste Zeile ausgeführt.RewriteRule ^(.*)$ https://beispiel.de/$1 [L,R=301]
– HTTP auf HTTPS mit dem Statuscode 301 (Moved Permanently) umleiten. Stelle sicher, dass Du den Domainnamen änderst.
Das folgende Beispiel enthält eine zusätzliche Bedingung, die überprüft, ob die Anfrage mit beginnt. Verwende es, um alle Besucher zu zwingen, die HTTPS-non-WWW-Version der Webseite zu verwenden: www
RewriteCond %{HTTPS} off [OR]
RewriteCond %{HTTP_HOST} ^www\.beispiel\.de [NC]
RewriteRule ^(.*)$ https://beispiel.de/$1 [L,R=301]
Beim Bearbeiten der Datei musst Du den Server nicht neu starten, da Apache die Datei bei jeder Anforderung liest..htaccess
Last but not least, bei Apache besteht die bevorzugte Methode zum Umleiten von HTTP auf HTTPS darin, die 301-Umleitung im virtuellen Host der Domäne zu konfigurieren.
#.htaccess #Apache #Apache Virtual Hosts #CentOS #Debian #DocumentRoot #Fedora #HTTP zu HTTPS #HTTPS #Port 443 #Redirect permanent #TLS/SSL #Ubuntu #Virtual Hosts