Zertifikate und HTTPS
Nach der grundlegenden Installation ergänzt Du 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 verwenden wir
nc.home.arpa und beispielhaft die IP-Adresse 192.168.xx.xxx. Ersetze beide Werte
durch den tatsächlichen Namen und die Adresse Deines Testservers. Der Name muss auf
Deinen 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, mit denen Du Nextcloud aufrufst. In einer Root-Shell erzeugst Du 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 Dein DNS-Name und gegebenenfalls Deine IP-Adresse erscheinen. Der private Schlüssel bleibt auf dem Server. Für einen neuen Namen oder eine geänderte IP-Adresse musst Du die Zertifikatsabdeckung erneut prüfen.
Vertraue auf den Übungsclients nur dem selbst erstellten öffentlichen Zertifikat, nachdem Du seine Herkunft und seinen Fingerabdruck geprüft hast. Die Einrichtung des Vertrauens hängt vom Betriebssystem, Browser und Client ab. Den SHA-256-Fingerabdruck zeigst Du so an:
Für öffentlich erreichbare Installationen verwendest Du stattdessen ein zum Hostnamen passendes Zertifikat einer auf den Clients vertrauenswürdigen Zertifizierungsstelle.
HTTPS-VirtualHost einrichten
Wir verwenden durchgehend nextcloud-ssl.conf, unabhängig vom zunächst eingerichteten
HTTP-VirtualHost in 000-default.conf. Bearbeite die Quelldatei unter sites-available:
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, prüfe die Zuordnung mit
apache2ctl -S. Deaktiviere eine nicht mehr benötigte konkurrierende Test-Site gezielt,
beispielsweise mit a2dissite default-ssl.conf, und prüfe und lade Apache danach erneut.
Kontrolle: https://nc.home.arpa/ im Browser öffnen. Der Name muss vom Zertifikat
abgedeckt sein. Falls Nextcloud eine nicht vertrauenswürdige Domain meldet, ergänze
Deinen tatsächlichen Hostnamen in der bestehenden trusted_domains-Liste in
config/config.php; vorhandene Einträge bleiben erhalten. Diese Nextcloud-Liste
ersetzt nicht das Zertifikatsvertrauen des Browsers.
Wenn HTTPS funktioniert, folgt HTTP-Weiterleitung und HSTS.