GNU/Linux >> LINUX-Kenntnisse >  >> Linux

So zwingen Sie Apache, HTTPS zu verwenden

Hallo Leute ! In diesem Tutorial zeigen wir, wie man Apache HTTP zwangsweise auf HTTPS umleitet

Wenn Sie Websitebesitzer oder Systemadministrator sind, haben Sie wahrscheinlich regelmäßig mit Apache zu tun. Eine der häufigsten Aufgaben, die Sie wahrscheinlich ausführen werden, ist das Umleiten des HTTP-Datenverkehrs auf die gesicherte (HTTPS) Version Ihrer Website.

Im Gegensatz zu HTTP, wo 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.

Wir werden dies auf zwei verschiedene Arten sehen:

ich. Virtuellen Host verwenden.

ii. Verwendung von .htaccess

Fangen wir an

Virtuellen Host verwenden

In der Direktive für virtuelle Hosts können Sie das Site Document Root (das Verzeichnis, das die Website-Dateien 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 auf einer Domäne installiert ist, haben Sie zwei virtuelle Hostanweisungen für diese Domäne. Der erste für die HTTP-Version der Website auf Port 80 und der andere für die HTTPS-Version auf Port 443.

In Red-Hat-basierten Distributionen wie CentOS und Fedora werden virtuelle Hostdateien in /etc/httpd/conf.d gespeichert. Unter Debian und seinen Derivaten wie Ubuntu werden die Dateien in /etc/apache2/sites-available gespeichert Verzeichnis.

Um eine Website auf HTTPS umzuleiten, verwenden Sie Redirect Direktive, wie am Beispiel „unixcop.com“

gezeigt
<VirtualHost *:80> 
  ServerName unixcop.com
  ServerAlias www.unixcop.com

  Redirect permanent / https://unixcop.com/
</VirtualHost>

<VirtualHost *:443>
  ServerName unixcop.com
  ServerAlias www.unixcop.com

  Protocols h2 http/1.1

</VirtualHost>

Erklärung

Lassen Sie uns den obigen Code erklären

  • VirtualHost *:80 – Der Apache-Server wartet auf eingehende Verbindungen auf Port 80 (HTTP) für die angegebene Domain.
  • VirtualHost *:443 – Der Apache-Server wartet auf eingehende Verbindungen auf Port 443 (HTTPS) für die angegebene Domain.

Der ServerName und ServerAlias Direktiven geben die Domänennamen des virtuellen Hosts an. Stellen Sie sicher, dass Sie es durch Ihren Domainnamen ersetzen. (in unserem Fall unixcop.com)

Die hervorgehobene Zeile, Redirect permanent / https://example.com/ innerhalb des virtuellen HTTP-Hosts leitet den Datenverkehr an die HTTPS-Version der Website weiter.

Normalerweise möchten Sie auch die HTTPS-www-Version der Website auf die Nicht-www-Version umleiten oder umgekehrt. Hier ist eine Beispielkonfiguration:

<VirtualHost *:80> 
  ServerName unixcop.com
  ServerAlias www.unixcop.com

  Redirect permanent / https://unixcop.com/
</VirtualHost>

<VirtualHost *:443>
  ServerName unixcop.com
  ServerAlias www.unixcop.com

  Protocols h2 http/1.1

  <If "%{HTTP_HOST} == 'www.unixcop.com'">
    Redirect permanent / https://unixcop.com/
  </If>

</VirtualHost>

Der obige Code prüft, ob der Anforderungsheader die www-Domain enthält und leitet zur Nicht-www-Version weiter.

Immer wenn Sie Änderungen an den Konfigurationsdateien vornehmen, müssen Sie den Apache-Dienst neu starten oder neu laden, damit die Änderungen wirksam werden

.htaccess ist eine Konfigurationsdatei auf Verzeichnisbasis 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 wird, und um zusätzliche Funktionen zu aktivieren/deaktivieren.

Üblicherweise die .htaccess Datei wird im Domain-Root-Verzeichnis platziert, aber Sie können auch andere .htaccess haben Dateien in den Unterverzeichnissen.

Diese Methode erfordert den mod_rewrite Modul, das auf dem Apache-Server geladen werden soll. Dieses Modul wird standardmäßig auf den meisten Servern geladen. Wenn möglich, ziehen Sie es vor, eine Umleitung im virtuellen Host zu erstellen, da dies einfacher und sicherer ist.

Um den gesamten HTTP-Datenverkehr auf HTTPS umzuleiten, öffnen Sie das Stammverzeichnis .htaccess Datei, und fügen Sie ihr den folgenden Code hinzu

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://unixcop.com/$1 [L,R=301]

Erklärung

  • RewriteEngine On – aktiviert die Rewrite-Fähigkeiten.
  • RewriteCond %{HTTPS} off – prüft auf HTTP-Verbindung, und wenn die Bedingung erfüllt ist, wird die nächste Zeile ausgeführt.
  • RewriteRule ^(.*)$ https://unixcop.com/$1 [L,R=301] – Umleitung von HTTP zu HTTPS mit Statuscode 301 (Moved Permanently).

Das folgende Beispiel hat eine zusätzliche Bedingung, die prüft, ob die Anfrage mit www beginnt . Verwenden Sie es, um alle Besucher zu zwingen, die HTTPS-Nicht-www-Version der Website zu verwenden

RewriteCond %{HTTPS} off [OR]
RewriteCond %{HTTP_HOST} ^www\.unixcop\.com [NC]
RewriteRule ^(.*)$ https://unixcop.com/$1 [L,R=301]

Beim Bearbeiten von .htaccess -Datei müssen Sie den Server nicht neu starten, da Apache die Datei bei jeder Anfrage liest.

Sie wissen also bereits, wie Sie Apache dazu zwingen, HTTPS zu verwenden.

Apache-Dokumentation


Linux
  1. So verwenden Sie Nginx zum Umleiten

  2. So verwenden Sie den Su-Befehl unter Linux

  3. Wie bringt man Apache dazu, Php 7.0 (nicht 7.1) zu verwenden?

  4. Wie installiere ich Apache auf Ubuntu?

  5. So sichern Sie Apache mit Lets Encrypt unter Ubuntu 18.04

So verwenden Sie den PS-Befehl

So verwenden Sie den TOP-Befehl

So aktivieren Sie die erzwungene HTTPS-Umleitung in cPanel

Wie verwende ich Apache SpamAssassin in cPanel?

So installieren Sie Apache unter Ubuntu 20.04

Wie erzwinge ich HTTPS für meine Domain?