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.
Sichern Sie sich Ihr SSL-Zertifikat
- Verschlüsselt Webseiten-Kommunikation
- Verhindert Sicherheits-Warnungen
- Verbessert Google-Platzierung
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.
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.
Lernen Sie, einen Apache-Webserver selbst einzurichten!
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:
Der generelle Prozess beim manuellen Einrichten von Apache-SSL umfasst die folgenden Schritte:
- Zertifikatsdateien erzeugen
- Zertifikatsdateien auf Server platzieren
- Apache-SSL-Konfiguration einfügen
- 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:
- Privater Schlüssel
- Primäres SSL-Zertifikat
- Ggf. intermediäres SSL-Zertifikat
- Ordner für Zertifikatsdateien erstellen:
mkdir -p /root/cert/
- Zertifikatsdateien in Ordner verschieben:
mv /path/to/cert-files/* /root/cert/
- 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/
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.
- Apache Konfigurationsdatei bearbeiten:
nano /usr/local/apache2/conf/httpd.conf
- Bestehenden VHost-Block für HTTP identifizieren.
<VirtualHost *:80>
DocumentRoot "/var/www/html"
ServerName your.domain.example.com
</VirtualHost>
- HTTP-VHost-Block duplizieren und für HTTPS anpassen.
<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.
Lernen Sie, wie bei der Verbesserung der Performance eines Apache-Webservers vorzugehen ist!