Wichtige Voraussetzungen zur Einrichtung von HTTPS unter Arch Linux

Systemanforderungen

  • Eine aktuelle Arch Linux-Installation.
  • Ein laufender Webserver wie Apache oder Nginx.
  • Zugriff auf Sudo-Rechte.

Befehle, die Root-Rechte erfordern, sind mit # gekennzeichnet. Befehle, die als normaler Benutzer ausgeführt werden können, sind mit $ markiert. Die empfohlene Methode zur Ausführung von Root-Befehlen ist es, sie als regulärer Benutzer mit sudo zu beginnen.

Stellen Sie sicher, dass ein Texteditor installiert ist, mit dem Sie umgehen können – zum Beispiel vi, vim, nano, emacs oder ein vergleichbares Werkzeug.

Warum HTTPS für eine sichere Webverbindung entscheidend ist

Die Nutzung von HTTPS bei der Bereitstellung von Webseiten ermöglicht eine starke Verschlüsselung, wodurch der gesamte Datenverkehr zwischen Webserver und Benutzer vertraulich bleibt und nicht mitgelesen werden kann. HTTPS schützt nicht nur die übermittelten Daten, sondern verbirgt auch die konkreten URL-Pfade, die sonst sensible Informationen preisgeben könnten.

Zusätzlich bewerten Suchmaschinen wie Google HTTPS als Rankingfaktor. Dies ist Teil der Initiative HTTPS Everywhere, die eine sichere Webnutzung fördern soll.

Hinweis: DNS-Anfragen offenbaren zwar die Domain, jedoch nicht die vollständige URL. Der URL-Pfad bleibt in diesem Prozess verborgen.

SSL/TLS-Zertifikat für HTTPS erhalten

Auch wenn TLS inzwischen offiziell SSL ersetzt hat, wird der Begriff „SSL-Zertifikat“ weiterhin häufig verwendet. Daher bleibt dieser Begriff in dieser Anleitung bestehen.

Um HTTPS auf deinem Webserver zu aktivieren, benötigst du eine private Schlüsseldatei (.key), die geheim bleibt, sowie eine öffentliche Zertifikatsdatei (.crt), welche den öffentlichen Schlüssel enthält. Zertifikate müssen signiert sein. Eine Eigen-Signatur ist möglich, wird jedoch von modernen Browsern oft als unsicher eingestuft. Chrome zeigt in solchen Fällen zum Beispiel: „Ihre Verbindung ist nicht privat“ oder „NET::ERR_CERT_AUTHORITY_INVALID“. Für private oder interne Seiten ist dies eventuell akzeptabel, da man die Warnung manuell umgehen kann – etwa über „Erweitert“ und „Weiter zu… (unsicher)“. Die Verbindung wird dennoch als nicht sicher gekennzeichnet.

Während der Erstellung des Zertifikats wirst du aufgefordert, Informationen wie Land, Bundesland oder Region, Stadt, Organisation, Organisationseinheit, Common Name (in der Regel der Domainname) sowie eine E-Mail-Adresse anzugeben. Diese Daten sind später für alle sichtbar, die sich per HTTPS mit deiner Seite verbinden.

Falls du mehrere virtuelle Hosts betreibst, benötigst du für jeden eine eigene Zertifikatsdatei mit eindeutigem Dateinamen, welche korrekt in den jeweiligen Konfigurationsdateien referenziert wird.

Zum richtigen Konfigurationsverzeichnis wechseln

Für Apache:

Für Nginx:

Selbstsigniertes Zertifikat erstellen

Zum Erzeugen eines privaten Schlüssels und eines selbstsignierten Zertifikats:

# openssl req -new -x509 -nodes -newkey rsa:4096 -keyout server.key -out server.crt -days 825

Jetzt die Zugriffsrechte einschränken:

# chmod 400 server.key
# chmod 444 server.crt

Ein vertrauenswürdiges Zertifikat erhalten

Wenn du Browser-Warnungen vermeiden willst, solltest du ein von einer anerkannten Zertifizierungsstelle (CA) signiertes Zertifikat verwenden. Während ältere Browser neue CAs manchmal nicht unterstützen, werden diese von aktuellen Browser-Versionen in der Regel anerkannt.

Normalerweise benötigst du eine Domain und eine öffentliche IP-Adresse. Manche Stellen bieten zwar Zertifikate für öffentliche IPs an, das ist jedoch selten.

Viele Anbieter stellen ein 30-tägiges Testzertifikat kostenlos zur Verfügung. So kannst du den Ablauf testen, bevor du zahlst. Die Preise reichen von wenigen Euro bis zu mehreren hundert Euro jährlich – abhängig von Funktionsumfang, Anzahl unterstützter Domains oder Wildcard-Zertifikaten. Ein Standardzertifikat bestätigt lediglich, dass du Kontrolle über die Domain besitzt. Ein Extended Validation (EV) Zertifikat überprüft zusätzlich deine Identität und zeigt in modernen Browsern eine grüne Adressleiste an.

Zur Verifikation verlangen einige Anbieter Zugriff auf eine E-Mail-Adresse wie admin@deine-domain.de. Alternativen sind das Platzieren einer Datei im folgenden Pfad:

  • /srv/http/.well-known/pki-validation/ (für Apache)
  • /usr/share/nginx/html/.well-known/pki-validation/ (für Nginx)

oder das temporäre Einrichten eines vom Anbieter vorgegebenen CNAME-Eintrags in den DNS-Einstellungen deiner Domain.

Die meisten Zertifizierungsstellen akzeptieren folgendes Vorgehen:

Privaten Schlüssel und CSR generieren

Zuerst den privaten Schlüssel erzeugen:

# openssl genpkey -algorithm RSA -pkeyopt rsa_keygen_bits:4096 -out server.key

Schlüsseldatei auf Root-Leserechte beschränken:

Jetzt die Zertifikatsanforderung (CSR) erzeugen. Gib dabei als „Common Name“ deinen Domainnamen an. Das Challenge-Passwort kann leer bleiben:

# openssl req -new -sha256 -key server.key -out server.csr

CSR-Datei ebenfalls absichern:

Inhalt der Zertifikatsanforderung anzeigen (Base64-codiert):

Kopiere den vollständigen Inhalt von -----BEGIN CERTIFICATE REQUEST----- bis -----END CERTIFICATE REQUEST----- und füge ihn im entsprechenden Formular deiner CA ein. Abhängig vom Anbieter und Zertifikatstyp erfolgt die Ausstellung sofort oder nach einigen Tagen.

Wenn du dein signiertes Zertifikat erhältst, speichere es als server.crt im Konfigurationsverzeichnis deines Webservers und passe die Zugriffsrechte an:


Webserver für die Nutzung von Zertifikat und privatem Schlüssel konfigurieren

Falls dein Server durch eine Firewall geschützt ist, stelle sicher, dass eingehender TCP-Verkehr auf Port 443 erlaubt ist – dieser ist für HTTPS erforderlich.

Apache-Konfiguration

Öffne die Datei /etc/httpd/conf/httpd.conf und entferne die Kommentarzeichen bei folgenden Zeilen, um die SSL-Unterstützung zu aktivieren:

LoadModule ssl_module modules/mod_ssl.so
LoadModule socache_shmcb_module modules/mod_socache_shmcb.so
Include conf/extra/httpd-ssl.conf

Wenn du virtuelle Hosts verwendest, führt das Ändern dieser Hauptkonfiguration dazu, dass alle Domains dasselbe Zertifikat nutzen. Das kann zu Browserwarnungen führen, falls das Zertifikat nicht zur jeweiligen Domain passt. Um das zu vermeiden, musst du für jede virtuelle Seite unter /etc/httpd/conf/vhosts/ eine eigene Konfiguration mit jeweils eigenem Zertifikat und Schlüssel definieren.

Ändere dabei:

<VirtualHost *:80>

zu:

<VirtualHost *:80 *:443>

Füge innerhalb des VirtualHost-Blocks Folgendes hinzu:

  SSLEngine on
  SSLCertificateFile "/etc/httpd/conf/YOUR-DOMAIN-NAME.com.crt"
  SSLCertificateKeyFile "/etc/httpd/conf/YOUR-DOMAIN-NAME.com.key"

Starte anschließend Apache neu:

Nginx-Konfiguration

Bearbeite die Datei /etc/nginx/nginx.conf, scrolle bis zum Ende und entferne die Kommentarzeichen aus dem HTTPS-Server-Block. Ändere anschließend folgende Direktiven:

ssl_certificate      server.crt;
ssl_certificate_key  server.key;
root                 /usr/share/nginx/html;

Hinweis: Eine solche Änderung bewirkt, dass alle Domains dasselbe Zertifikat verwenden. Damit jede Domain ihr eigenes Zertifikat erhält, editiere oder erstelle einen separaten Server-Block in /etc/nginx/sites-enabled/ mit folgendem Inhalt:

server {
    listen 443 ssl;
    server_name YOUR-DOMAIN-NAME.com;

    ssl_certificate      YOUR-DOMAIN-NAME.com.crt;
    ssl_certificate_key  YOUR-DOMAIN-NAME.com.key;

    ssl_session_cache    shared:SSL:1m;
    ssl_session_timeout  5m;

    ssl_ciphers  HIGH:!aNULL:!MD5;
    ssl_prefer_server_ciphers  on;

    location / {
        root /usr/share/nginx/YOUR-DOMAIN-NAME.com;
        index index.html index.htm;
    }
}

Starte Nginx anschließend neu, um die Konfiguration zu aktivieren:

Fazit

Die Aktivierung von HTTPS unter Arch Linux erfordert sorgfältige Konfiguration und sicheres Zertifikatsmanagement. Durch die Nutzung eines vertrauenswürdigen Zertifikats und die gezielte Einrichtung deines Apache- oder Nginx-Webservers für jede virtuelle Domain sorgst du für verschlüsselte und authentifizierte Verbindungen. So erfüllst du nicht nur heutige Sicherheitsanforderungen, sondern steigerst auch die Vertrauenswürdigkeit und Sichtbarkeit deiner Website in Suchmaschinen. Nach erfolgreicher Einrichtung ist dein Server bereit, verschlüsselten Datenverkehr über Port 443 zuverlässig bereitzustellen.

Quelle: vultr.com

Jetzt 200€ Guthaben sichern

Registrieren Sie sich jetzt in unserer ccloud³ und erhalten Sie 200€ Startguthaben für Ihr Projekt.

Das könnte Sie auch interessieren: