HTTP zu HTTPS in Apache umleiten

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.

Schreibe einen Kommentar 0

Your email address will not be published. Required fields are marked *