HTTP-Weiterleitung und HSTS
Voraussetzung ist eine funktionierende HTTPS-Einrichtung mit geprüftem Zertifikatsvertrauen. Erst danach die Weiterleitung und HSTS einrichten.
HTTP auf HTTPS umleiten
Erst wenn der HTTPS-Zugriff funktioniert, ersetzt man den bisherigen Port-80-VirtualHost
in /etc/apache2/sites-available/000-default.conf durch eine Weiterleitung.
In dieser Übung wird die bisherige Default-Site ausschließlich für Nextcloud verwendet:
<VirtualHost *:80>
ServerName nc.home.arpa
Redirect permanent / https://nc.home.arpa/
</VirtualHost>
Danach apache2ctl configtest ausführen und bei Erfolg systemctl reload apache2.
Falls der Server mehrere Websites betreibt, muss man die Weiterleitung stattdessen
in dem tatsächlich für Nextcloud zuständigen HTTP-VirtualHost einrichten.
HSTS nach funktionierender Vertrauenseinrichtung aktivieren
Als Root das Apache-Modul headers aktivieren und die HTTPS-Konfiguration öffnen:
Innerhalb des vorhandenen HTTPS-VirtualHosts (<VirtualHost *:443>)
vor dem abschließenden </VirtualHost> folgende Zeile hinzufügen. Ist der Header
bereits konfiguriert, den bestehenden Eintrag anpassen:
Die Konfiguration prüfen:
Nur wenn Syntax OK erscheint, Apache neu laden:
HSTS wird nur über HTTPS berücksichtigt und setzt eine fehlerfreie, vom Client akzeptierte TLS-Verbindung voraus. Bei der selbstsignierten Übungseinrichtung ist dafür die ausdrückliche Vertrauenseinrichtung erforderlich. Die Laufzeit bedeutet, dass sich der Browser HTTPS für diesen Host langfristig merkt.
Mit eingerichtetem Zertifikatsvertrauen kann man den Header prüfen. Auf dem Server kann man das öffentliche Zertifikat für diesen Test ausdrücklich angeben:
Die Ausgabe sollte Strict-Transport-Security: max-age=15552000 enthalten.
Bei einem öffentlich vertrauenswürdigen Zertifikat genügt
curl -I https://DEIN-NEXTCLOUD-HOSTNAME/ mit dem tatsächlichen Hostnamen.
curl -k würde
die Zertifikatsprüfung umgehen und ist deshalb kein Nachweis für korrektes Vertrauen.
includeSubDomains wird nicht pauschal verwendet; es würde die HTTPS-Vorgabe auch auf
alle Subdomains ausweiten.
HSTS-Warnung verstehen
Unter Administrationseinstellungen → Übersicht erscheint im Bereich HTTP-Header folgende Warnung:
Einige Header sind in Ihrer Instanz nicht richtig eingestellt - Der
Strict-Transport-Security-HTTP-Header ist nicht gesetzt (er sollte mindestens15552000Sekunden betragen). Für erhöhte Sicherheit wird empfohlen, HSTS zu aktivieren.
HSTS muss im HTTPS-VirtualHost auf Port 443 gesetzt werden. Ein Header über
HTTP aktiviert HSTS im Browser nicht. Die vollständige TLS-Konfiguration und ihre
Prüfung stehen in Zertifikate und HTTPS.
Dort wird durchgehend /etc/apache2/sites-available/nextcloud-ssl.conf verwendet.
Behebung: Die Schritte unter
HSTS aktivieren
ausführen. 15552000 Sekunden entsprechen 180 Tagen. Der Browser merkt sich für diesen
Zeitraum, dass er den Host ausschließlich über HTTPS aufrufen soll.
Kontrolle: Den ausgelieferten Header mit curl wie oben beschrieben prüfen und
anschließend die Administrationsübersicht neu laden. Die HSTS-Warnung sollte
verschwunden sein. Bei einem vorgeschalteten Reverse Proxy muss der Header in der
HTTPS-Antwort enthalten sein, die der Client tatsächlich erhält; daher den
von den Benutzern verwendeten Hostnamen prüfen.
Quelle: Nextcloud-Dokumentation zu HSTS-Warnungen.