ubuntuusers.de

mod ssl

Dieser Artikel wurde für die folgenden Ubuntu-Versionen getestet:


Du möchtest den Artikel für eine weitere Ubuntu-Version testen? Mitarbeit im Wiki ist immer willkommen! Dazu sind die Hinweise zum Testen von Artikeln zu beachten.

Zum Verständnis dieses Artikels sind folgende Seiten hilfreich:

Wiki/Icons/security.png

Einleitung

Diese Anleitung beschreibt die Aktivierung der SSL-Verschlüsselung für den Webserver Apache2.

Der Artikel zur Erzeugung eines dazu nötigen SSL-Zertifikates samt zugehörigem privaten Schlüssel findet sich ab sofort hier: TLS-Zertifikate .

Installation

Das SSL-Modul des Apache wird zusammen mit der Installation von Apache 2.4 (Abschnitt „Installation“) installiert.

Benutzung

Modul aktivieren

Zur Verwendung muss das Modul noch einmalig aktiviert werden. Das geschieht mit den Kommandos

sudo a2enmod ssl
sudo service apache2 restart 

Konfiguration

Um TLS/SSL verwenden zu können, muss der Apache auf TCP-Port 443 lauschen. Dies wird in der Datei /etc/apache2/ports.conf definiert. Wichtig ist dabei der Abschnitt

<IfModule ssl_module>
    Listen 443
</IfModule>

In älteren Ubuntu- bzw. Apache-Versionen ist dieser Abschnitt u.U. auskommentiert und damit abgeschaltet. Zur Aktivierung müssen lediglich die Kommentarzeichen (vorangestellte #) entfernt werden.

Nach dieser Änderung muss die Konfiguration des Apache neu eingelesen werden:

sudo service apache2 reload 

SSL-Webseite konfigurieren

Abschließend muss nur noch ein Virtual Host für TLS/SSL eingerichtet werden. Im folgenden Beispiel wird davon ausgegangen, dass ein SSL-Zertifikat unter /etc/ssl/certs/apache.crt und ein zugehöriger Schlüssel unter /etc/ssl/private/apache.key abgelegt wurde.

Für die Konfiguration wird die Datei /etc/apache2/sites-available/ssl.conf mit folgendem Inhalt erstellt:

<VirtualHost *:443>
    SSLEngine on
    SSLCertificateFile /etc/ssl/certs/apache.crt
    SSLCertificateKeyFile /etc/ssl/private/apache.key
    
    # Pfad zu den Webinhalten
    DocumentRoot /var/www/html/
</VirtualHost>

Dieser VirtualHost wird nun mit

sudo a2ensite ssl.conf 

aktiviert. Anschließend lässt man den Apache die Konfiguration und lädt bei Erfolg die Konfiguration in den laufenden Apache:

sudo apache2ctl configtest && sudo service apache2 reload 

Ausbau

SSL erzwingen

Oftmals wird gewünscht, dass Seiten nur über https:// erreicht werden können. Dies kann in vielen Fällen einfach mit der Apache Redirect-Directive 🇬🇧 oder mit dem Apache-Modul mod_rewrite erreicht werden.

<VirtualHost *:80>
    Redirect permanent / https://SERVER_NAME/
</VirtualHost>

HSTS

Um die Sicherheit noch weiter zu erhöhen, kann das HTTP Strict Transport Security (HSTS)-Verfahren eingesetzt werden. Dadurch werden z. B. Man-in-the-middle-Angriffe erschwert. Um diese Funktion nutzen zu können, muss zuerst das Modul mod_headers aktiviert werden:

sudo a2enmod headers 

Anschließend muss in der vHost-Konfigurationsdatei (Port 443) folgende Zeile ergänzt werden:

Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains;"

Mit der max-age-Angabe wird dem Browser mitgeteilt, dass die entsprechende Website in den nächsten 365 Tagen (= 31536000 Sekunden) nur noch via HTTPS aufgerufen werden soll. Um die Änderungen wirksam zu machen, wird die Konfiguration neu geladen:

sudo service apache2 reload 

Problembehebung

Port 443 schon von Apache selbst belegt

Erscheint beim Starten des Servers die Fehlermeldung

(98)Address already in use: make_sock: could not bind to address 0.0.0.0:443

no listening sockets available, shutting down

so sollten die Einträge in /etc/apache2/ports.conf überprüft werden. Dort darf der Eintrag

1
Listen 443

nur einmal vorhanden sein. Auch in anderen Dateien der Apache-Konfiguration darf diese Direktive nicht nochmal vorkommen!

SSL-Fehlermeldung beim Verbindungsaufbau

Erscheint beim Seitenaufruf im Browser die Fehlermeldung

ssl_error_rx_record_too_long

liegt das meist an fehlerhaft konfigurierten vHosts. Es sollten zwei VirtualHost-Einträge innerhalb der Dateien in /etc/apache2/sites-available/ vorhanden sein:

1
2
VirtualHost *:80
VirtualHost *:443

intern

  • SSL Erlangung eines SSL-Zertifikates

extern

Diese Revision wurde am 29. November 2020 18:53 von tuxifreund erstellt.
Die folgenden Schlagworte wurden dem Artikel zugewiesen: Netzwerk, Server, Internet, Sicherheit, Verschlüsselung, Apache, SSL