Zum Inhalt

HTTP-Weiterleitung und HSTS

Voraussetzung ist eine funktionierende HTTPS-Einrichtung mit geprüftem Zertifikatsvertrauen. Richte erst danach die Weiterleitung und HSTS ein.

HTTP auf HTTPS umleiten

Erst wenn der HTTPS-Zugriff funktioniert, ersetzt Du 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 Dein Server mehrere Websites betreibt, musst Du die Weiterleitung stattdessen in dem tatsächlich für Nextcloud zuständigen HTTP-VirtualHost einrichten.

HSTS nach funktionierender Vertrauenseinrichtung aktivieren

Füge innerhalb des HTTPS-VirtualHosts in nextcloud-ssl.conf hinzu:

Header always set Strict-Transport-Security "max-age=15552000"

Prüfe und lade Apache erneut wie oben beschrieben. 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 kannst Du den Header prüfen. Auf dem Server kannst Du das öffentliche Zertifikat für diesen Test ausdrücklich angeben:

curl --cacert /etc/ssl/certs/nextcloud.crt -I https://nc.home.arpa/

Die Ausgabe sollte den Header Strict-Transport-Security enthalten. curl -k würde die Zertifikatsprüfung umgehen und ist deshalb kein Nachweis für korrektes Vertrauen. includeSubDomains verwenden wir nicht pauschal; es würde die HTTPS-Vorgabe auch auf alle Subdomains ausweiten.

HSTS-Warnung verstehen

Einige Header sind in Ihrer Instanz nicht richtig eingestellt - Der Strict-Transport-Security-HTTP-Header ist nicht gesetzt (er sollte mindestens 15552000 Sekunden 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 verwenden wir durchgehend /etc/apache2/sites-available/nextcloud-ssl.conf.

Nach funktionierender HTTPS-Einrichtung gehört diese Zeile innerhalb dieses VirtualHosts:

Header always set Strict-Transport-Security "max-age=15552000"

Das Apache-Modul headers muss aktiviert sein. Bei selbstsignierten Zertifikaten muss der Browser dem Zertifikat vertrauen; eine Ausnahme nach einer Zertifikatswarnung ist nicht gleichbedeutend mit einer verlässlich eingerichteten Vertrauenskette. HSTS erst nach erfolgreicher Zertifikatsprüfung aktivieren. includeSubDomains wird hier nicht pauschal gesetzt, da dafür alle betroffenen Subdomains HTTPS unterstützen müssten.