Mod ssl: Unterschied zwischen den Versionen
(6 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
Zeile 1: | Zeile 1: | ||
'''topic''' - Kurzbeschreibung | '''topic''' - Kurzbeschreibung | ||
== Beschreibung == | == Beschreibung == | ||
Aktivierung der | Aktivierung der Transport Layer Security/SSL-Verschlüsselung für den Webserver [[Apache HTTP Server]] | ||
* | * Erzeugung eines SSL-Zertifikates/Privaten Schlüssel: siehe [[TLS-Zertifikate]] | ||
== Installation == | == Installation == | ||
Zeile 25: | Zeile 25: | ||
=== SSL-Webseite konfigurieren === | === SSL-Webseite konfigurieren === | ||
Abschließend muss nur noch ein [ | Abschließend muss nur noch ein [[Apache/HTTP/Virtuelle Server | 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: | Für die Konfiguration wird die Datei '''/etc/apache2/sites-available/ssl.conf''' mit folgendem Inhalt erstellt: | ||
Zeile 32: | Zeile 32: | ||
SSLCertificateFile /etc/ssl/certs/apache.crt | SSLCertificateFile /etc/ssl/certs/apache.crt | ||
SSLCertificateKeyFile /etc/ssl/private/apache.key | SSLCertificateKeyFile /etc/ssl/private/apache.key | ||
# Pfad zu den Webinhalten | # Pfad zu den Webinhalten | ||
DocumentRoot /var/www/html/ | DocumentRoot /var/www/html/ | ||
Zeile 97: | Zeile 97: | ||
{{Special:PrefixIndex/{{BASEPAGENAME}}}} | {{Special:PrefixIndex/{{BASEPAGENAME}}}} | ||
---- | ---- | ||
[[SSL]] Erlangung eines SSL-Zertifikates | |||
==== Links ==== | ==== Links ==== |
Aktuelle Version vom 6. Mai 2024, 17:27 Uhr
topic - Kurzbeschreibung
Beschreibung
Aktivierung der Transport Layer Security/SSL-Verschlüsselung für den Webserver Apache HTTP Server
- Erzeugung eines SSL-Zertifikates/Privaten Schlüssel: siehe TLS-Zertifikate
Installation
Das SSL-Modul des Apache wird zusammen mit der Installation von Apache/HTTP/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 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 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 [:Apache/mod_rewrite/#Alles-auf-HTTPS-umleiten:mod_rewrite] erreicht werden.
<VirtualHost *:80> Redirect permanent / https://SERVER_NAME/ </VirtualHost>
HSTS
Um die Sicherheit noch weiter zu erhöhen, kann das [wikipedia:Hypertext_Transfer_Protocol_Secure#HSTS: HTTP Strict Transport Security (HSTS)]-Verfahren eingesetzt werden. Dadurch werden z. B. [wikipedia:Man-in-the-middle-Angriff: 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
#!code apache 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:
#!code apache VirtualHost *:80 VirtualHost *:443
Anhang
Siehe auch
SSL Erlangung eines SSL-Zertifikates
Links
Weblinks
- https://wiki.ubuntuusers.de/TLS-Zertifikate/
- mod_ssl - Dokumentation bei apache.org
- [github:nabla-c0d3/sslyze:SSLyze] - umfangreiche Testsuite für SSL-Server
- SSL Server Test - Online-Prüfung, Qualys SSL Labs
- [wikipedia:SSL-Verschlüsselung: SSL-Verschlüsselung]