Zum Inhalt

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:

openssl x509 -in /etc/ssl/certs/nextcloud.crt -noout -fingerprint -sha256

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:

vim /etc/apache2/sites-available/nextcloud-ssl.conf

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:

a2enmod ssl headers rewrite
a2ensite nextcloud-ssl.conf
apache2ctl configtest

Nur bei erfolgreicher Prüfung (Syntax OK) die Konfiguration neu laden:

systemctl reload apache2

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.