Apache-SSL einrichten

Mit der Einrichtung von Apache-SSL wird der beliebte Webserver für die Nutzung von HTTPS konfiguriert. HTTPS verschlüsselt die Verbindung zwischen dem Browser des Nutzers und dem Webserver. Zur Einrichtung werden je nach Hosting-Umgebung ggf. manuelle Schritte auf dem Server durchgeführt. Wir zeigen, wie dabei vorzugehen ist.

Voraussetzungen für Nutzung von Apache-SSL

Um mit dem Apache-Webserver SSL-verschlüsselte Verbindungen aufbauen zu können, bedarf es zunächst eines gültigen SSL-Zertifikats. Bei günstigen Shared-Hosting-Paketen werden SSL-Zertifikate heutzutage meist via „Let’s Encrypt“ kostenlos zur Verfügung gestellt und automatisch konfiguriert. Es gibt jedoch mannigfaltige Möglichkeiten, ein SSL-Zertifikat zu beziehen. Für professionelle Anwendungen lohnt es sich, ein eigens ausgestelltes SSL-Zertifikat einzurichten. So wird Seitenbesucherinnen und -besuchern signalisiert, dass sie tatsächlich mit der gewünschten Organisation kommunizieren. Das schafft zusätzliches Vertrauen.

SSL-Zertifikate von IONOS!

Wahren Sie dank SSL-Zertifikaten die Geheimhaltung Ihres Online-Verkehrs und stärken Sie das Vertrauen Ihrer Kunden in die Sicherheit Ihrer Webseite.

Geprüfte Sicherheit
Bis zu 256-bit Verschlüsselung
Einfache Aktivierung

Grundsätzlich wird ein SSL-Zertifikat für eine bestimmte Domain ausgestellt. Dabei handelt es sich um ein rein technisches Prüfkriterium. Darüber hinaus existieren strengere Validierungsstufen, bis hin zur Verifizierung der Organisations-Identität durch einen Menschen. Schauen wir uns die unterschiedlichen Validierungsstufen im Überblick an:

Validierung Erklärung Nutzen
Domain Validation (DV) Stellt sicher, dass Kommunikation verschlüsselt und nur mit der angegebenen Domain erfolgt. Macht keine Aussage darüber, wem die Domain gehört. Führt bei Phishing-Versuch oder Man-in-the-middle-Angriff zur Warnmeldung im Browser.
Organization Validation (OV) Wie DV; zusätzlich wird geprüft, dass die Domain zur angegebenen Organisation gehört. Gilt als Mindestvoraussetzung für den Onlinehandel.
Extended Validation (EV) Wie OV; zusätzlich menschliche Prüfung der Unternehmensidentität. Wird von großen Organisationen wie Banken sowie von offiziellen Stellen eingesetzt.

Neben SSL-Zertifikaten für einzelne Domains existieren sogenannte Wildcard-Zertifikate. Diese gelten für alle Subdomains unterhalb einer angegebenen Domain. So gilt das Zertifikat *.example.com für die Domains www.example.com, dev.example.com, shop.example.com, blog.example.com etc. Wildcard-Zertifikate sind praktisch, um auf einem Server Live- und Staging-Site bzw. Homepage und Shop oder Blog parallel zu betreiben.

Liegt bereits ein gültiges SSL-Zertifikat vor, benötigt man zum Einrichten von Apache-SSL noch SSH-Zugriff auf den Webserver sowie „sudo“- bzw. „root“-Zugang.

Tipp

Wie wird ein Apache-Webserver-SSL-Zertifikat eingerichtet?

Das spezifische Vorgehen zum Einrichten von Apache-SSL ist abhängig von dem eingesetzten Betriebssystem (OS) und der Apache-Version. Wir zeigen hier den Prozess für das „Apache httpd 2.4 default layout“. Die häufig anzutreffende Umgebung Apache2 auf Ubuntu erfordert ein etwas anderes Vorgehen. Weitere Konfigurationen für geläufige Kombinationen von OS und Apache-Version finden Sie im offiziellen Apache-Wiki.

Der generelle Prozess beim manuellen Einrichten von Apache-SSL umfasst die folgenden Schritte:

  1. Zertifikatsdateien erzeugen
  2. Zertifikatsdateien auf Server platzieren
  3. Apache-SSL-Konfiguration einfügen
  4. Apache-SSL-Funktionalität testen

Schauen wir uns die einzelnen Schritte im Detail an.

Apache-SSL-Zertifikatsdateien erzeugen

Um die SSL-Zertifikatsdateien zu erlangen, wird ein „Certificate Signing Request“ (CSR) ausgeführt. Der CSR-Prozess verknüpft den Domain-Namen mit identifizierenden Merkmalen der Organisation sowie einem kryptografischen Schlüssel. Das Ausführen des CSR erfolgt in Abhängigkeit vom Zertifikatsanbieter entweder über eine Weboberfläche oder von der Kommandozeile aus. Wir zeigen exemplarisch ein Beispiel für ein Certificate Signing Request via OpenSSL:

openssl req –new –newkey rsa:2048 –nodes –keyout <server-name>.key –out <server-name>.csr

Beim Ausführen des Befehls wird eine Reihe von Informationen abgefragt; ferner werden eine Handvoll Dateien erzeugt. Wir geben eine Übersicht der beim Ausführen des Certificate Signing Request (CSR) erzeugten Dateien samt Datei-Erweiterungen:

Datei Erweiterung Erläuterung
Privater Schlüssel .key Wird genutzt, um CSR zu erzeugen und später Verbindungen mithilfe des Zertifikats abzusichern und zu verifizieren.
CSR-Datei .csr Wird benötigt, um das SSL-Zertifikat zu bestellen.
Intermediäres SSL-Zertifikat .crt Zertifikat, welches eine Zertifizierungsstelle befähigt, weitere Zertifikate auszustellen.
Primäres SSL-Zertifikat .crt Für eine spezifische Domain und Organisation ausgestelltes SSL-Zertifikat.

Apache-SSL-Zertifikatsdateien auf Server platzieren

Zum Einrichten von Apache-SSL werden die Zertifikatsdateien auf dem Server platziert. In der Regel handelt es sich um zwei bis drei Dateien:

  1. Privater Schlüssel
  2. Primäres SSL-Zertifikat
  3. Ggf. intermediäres SSL-Zertifikat

Wir legen diese Dateien in einen eigenen Ordner und stellen sicher, dass sie nur vom Root-Benutzer lesbar sind. Von der Kommandozeile aus nutzen wir die folgenden Schritte:

  1. Ordner für Zertifikatsdateien erstellen:
mkdir -p /root/cert/
  1. Zertifikatsdateien in Ordner verschieben:
mv /path/to/cert-files/* /root/cert/
  1. Nutzer und Rechte anpassen, um Ordner und Dateien nur für Root lesbar zu machen:
chown root:root /root/cert/
chown root:root /root/cert/*
chmod 400 /root/cert/*
chmod 500 /root/cert/
Hinweis

Beim Schützen des Zertifikatsordners handelt es sich nicht um denselben Prozess wie beim Setzen eines Passwortschutzes für ein Verzeichnis mit Apache.

Apache-SSL-Konfiguration einfügen

Sobald die Zertifikatsdateien auf dem Server liegen, können Sie sich der Apache-SSL-Konfiguration zuwenden. Das Herzstück der Apache-SSL-Konfiguration ist ein „Virtual Host“-Block (VHost-Block). Meist existiert bereits ein VHost-Block für HTTP-Verbindungen. Soll der Server sowohl auf HTTPS- als auch auf HTTP-Anfragen antworten, werden beide VHost-Blöcke benötigt.

  1. Apache Konfigurationsdatei bearbeiten:
nano /usr/local/apache2/conf/httpd.conf
  1. Bestehenden VHost-Block für HTTP identifizieren.

Der gesuchte Block für HTTP enthält die Portnummer 80:

<VirtualHost *:80>
    DocumentRoot "/var/www/html"
    ServerName your.domain.example.com
</VirtualHost>
  1. HTTP-VHost-Block duplizieren und für HTTPS anpassen.

Wir duplizieren den HTTP-VHost-Block, passen den Port auf 443 an und fügen die Apache-SSL-spezifischen Einstellungen hinzu:

<VirtualHost *:443>
    DocumentRoot "/var/www/html"
    ServerName your.domain.example.com
        SSLEngine on
        SSLCertificateFile /path/to/your_domain_name.crt
        SSLCertificateKeyFile /path/to/your_private.key
        SSLCertificateChainFile /path/to/DigiCertCA.crt
</VirtualHost>

Im Anschluss speichern wir die Änderungen an der Apache-Konfigurationsdatei.

Apache-SSL-Funktionalität testen

Beim Einrichten der Apache-SSL-Konfiguration kann einiges schiefgehen. Je nach Einsatzszenario und Anforderungen gibt es subtile Unterschiede der Einstellungen. Es ist daher notwendig, die Apache-SSL-Funktionalität zu testen. Dazu gibt es das praktische Kommandozeilen-Tool 'apachectl':

apachectl configtest

Sollte dieser Befehl nicht funktionieren, versuchen wir den alternativen Befehl 'apache2ctl':

apache2ctl configtest

Sofern der Test erfolgreich war, starten wir im Anschluss den Apache-Server neu:

apachectl restart

Nachdem der Apache-Server mit angepasster Konfiguration neu startet, testen wir die SSL-Verbindung. Dazu rufen wir die Site in mindestens zwei verschiedenen Browsern auf. Zu guter Letzt unterziehen wir das installierte Zertifikat einem Gütetest. Dazu nutzen wir den kostenlosen SSL-Check von IONOS.

Tipp

Lernen Sie, wie bei der Verbesserung der Performance eines Apache-Webservers vorzugehen ist!