Zertifikate und HTTPS
Nach der grundlegenden Installation ergänzt man HTTPS für die Testumgebung. Die Erstellung des Zertifikats, seine Prüfung und die passende Apache-Site bleiben als zusammenhängender Ablauf auf dieser Seite.
TLS-Zertifikat für die Testumgebung
Ein selbstsigniertes Zertifikat verschlüsselt die Verbindung, wird aber von Browsern
nicht automatisch als vertrauenswürdig erkannt. In dieser Übung werden
nc.home.arpa und beispielhaft die IP-Adresse 192.168.xx.xxx verwendet. Beide Werte
durch den tatsächlichen Namen und die Adresse des Testservers ersetzen. Der Name muss auf
den Geräten auflösbar sein, beispielsweise über einen passenden lokalen DNS- oder
Hosts-Eintrag.
Zertifikat mit passenden Namenseinträgen erstellen
Die Subject Alternative Names (SAN) müssen zu den Adressen passen, über die Nextcloud aufgerufen wird. In einer Root-Shell erzeugt man Schlüssel und Zertifikat direkt an den vorgesehenen Orten:
openssl req -x509 -sha256 -nodes -days 365 -newkey rsa:2048 \
-keyout /etc/ssl/private/nextcloud.key \
-out /etc/ssl/certs/nextcloud.crt \
-subj "/CN=nc.home.arpa" \
-addext "subjectAltName=DNS:nc.home.arpa,IP:192.168.xxx.xxx"
chmod 600 /etc/ssl/private/nextcloud.key
openssl x509 -in /etc/ssl/certs/nextcloud.crt -noout -text
Kontrolle: Unter „Subject Alternative Name“ müssen der DNS-Name und gegebenenfalls die IP-Adresse erscheinen. Der private Schlüssel bleibt auf dem Server. Für einen neuen Namen oder eine geänderte IP-Adresse muss man die Zertifikatsabdeckung erneut prüfen.
Auf den Übungsclients nur dem selbst erstellten öffentlichen Zertifikat vertrauen, nach Prüfung seiner Herkunft und seines Fingerabdrucks. Die Einrichtung des Vertrauens hängt vom Betriebssystem, Browser und Client ab. Den SHA-256-Fingerabdruck zeigt man so an:
Für öffentlich erreichbare Installationen verwendet man stattdessen ein zum Hostnamen passendes Zertifikat einer auf den Clients vertrauenswürdigen Zertifizierungsstelle.
HTTPS-VirtualHost einrichten
Verwendet wird durchgehend nextcloud-ssl.conf, unabhängig vom zunächst eingerichteten
HTTP-VirtualHost in 000-default.conf. Die Quelldatei unter sites-available bearbeiten:
Die Datei erhält folgenden Inhalt; Namen und Zertifikatspfade bei Bedarf anpassen:
<VirtualHost *:443>
ServerName nc.home.arpa
ServerAdmin webmaster@localhost
DocumentRoot /var/www/nextcloud
SSLEngine on
SSLCertificateFile /etc/ssl/certs/nextcloud.crt
SSLCertificateKeyFile /etc/ssl/private/nextcloud.key
<Directory /var/www/nextcloud>
Require all granted
AllowOverride All
Options FollowSymLinks MultiViews
<IfModule mod_dav.c>
Dav off
</IfModule>
</Directory>
ErrorLog ${APACHE_LOG_DIR}/nextcloud-ssl-error.log
CustomLog ${APACHE_LOG_DIR}/nextcloud-ssl-access.log combined
</VirtualHost>
Module und genau diese Site aktivieren, anschließend die Syntax prüfen:
Nur bei erfolgreicher Prüfung (Syntax OK) die Konfiguration neu laden:
Falls aus einem vorherigen Versuch bereits default-ssl.conf oder ein anderer
HTTPS-VirtualHost für denselben Host aktiviert ist, die Zuordnung mit
apache2ctl -S prüfen. Eine nicht mehr benötigte konkurrierende Test-Site gezielt deaktivieren,
beispielsweise mit a2dissite default-ssl.conf, und Apache danach erneut prüfen und laden.
Kontrolle: https://nc.home.arpa/ im Browser öffnen. Der Name muss vom Zertifikat
abgedeckt sein. Falls Nextcloud eine nicht vertrauenswürdige Domain meldet, den tatsächlichen Hostnamen in der bestehenden trusted_domains-Liste in
config/config.php ergänzen; vorhandene Einträge bleiben erhalten. Diese Nextcloud-Liste
ersetzt nicht das Zertifikatsvertrauen des Browsers.
Wenn HTTPS funktioniert, folgt HTTP-Weiterleitung und HSTS.