uVersion
Deutsch
Herunterladen →

Wiki

TLS-Fingerabdruck

Der Server erzeugt bei der Installation ein selbstsigniertes Zertifikat. Jeder Client bestätigt dessen Fingerabdruck bei der ersten Verbindung.

Ist das sicher? Ja. Jede Verbindung und jede Dateiübertragung ist verschlüsselt: Niemand im Netzwerk kann lesen, was zwischen Ihren Arbeitsplätzen und Ihrem Server übertragen wird. Ihre Daten bleiben auf Ihrer eigenen Infrastruktur: nichts wird von einem Dritten gehostet, nichts läuft über uVersion. Nur Ihre Teammitglieder mit ihren eigenen Zugangsdaten haben Zugriff. Und falls auf der Verbindung etwas Ungewöhnliches passiert, erkennt die Software es und blockiert sofort, statt es unbemerkt durchzulassen.

uVersion verschlüsselt standardmäßig jede Verbindung über HTTPS, ohne Domainnamen und ohne gekauftes Zertifikat. Der Server erzeugt sein Zertifikat beim ersten Start, der Administrator teilt dessen Fingerabdruck mit dem Team, und jeder Arbeitsplatz bestätigt ihn einmal. Das ist das TOFU-Modell: Vertrauen beim ersten Kontakt, genau wie bei SSH, wenn es Sie beim ersten Mal den Fingerabdruck einer Maschine bestätigen lässt. Danach vergleicht der Client ihn bei jeder Verbindung und weigert sich, mit einem Server zu sprechen, der sich geändert hat.

Server-Fingerabdruck oder Prüfsumme? Beide sind SHA-256, und genau das bringt alle durcheinander. Der Server-Fingerabdruck identifiziert das Zertifikat Ihres Servers: Er dient dazu, die Maschine zu erkennen, mit der sich Ihre Arbeitsplätze verbinden. Eine Prüfsumme überprüft, ob eine heruntergeladene Datei unversehrt ist. Auf dieser Seite geht es nur um Ersteren.

Der Vorgang besteht aus zwei Schritten: den Fingerabdruck auf dem Server einmal finden, dann auf jedem Arbeitsplatz bestätigen, einmal pro Arbeitsplatz. Der Rest dieser Seite ist Referenz, zu lesen an dem Tag, an dem sich etwas ändert.

Fingerabdruck finden

Er wird am Ende der Installation angezeigt, neben dem Admin-Passwort. Danach gibt es drei Wege, ihn wiederzufinden, vom einfachsten bis zum manuellsten.

1. Aus einem Browser, ohne etwas zu installieren

Der Server stellt eine Informationsseite ohne Authentifizierung bereit: Öffnen Sie https://IHR-SERVER:8443/api/server-info. Weder sudo noch SSH-Zugang noch ein uVersion-Konto: das ist bei Weitem der kürzeste Weg.

Der Browser zeigt zunächst eine Sicherheitswarnung. Das ist normal und erwartet: Das Zertifikat ist selbstsigniert, keine öffentliche Instanz kennt es. Fahren Sie zur Website fort.

Die Sicherheitswarnung des Browsers beim ersten Öffnen der Serveradresse, mit dem Link oder der Schaltfläche, mit der man trotz des selbstsignierten Zertifikats fortfahren kann.

Die dann angezeigte Seite ist ein roher Datenblock. Der Fingerabdruck ist der Wert des Feldes tls_fingerprint: eine Folge von Hexadezimal-Bytes, durch Doppelpunkte getrennt. Genau diese Zeichenkette, vollständig, geben Sie an das Team weiter.

Die im Browser geöffnete Seite /api/server-info: die Felder version, build_sha, tls_mode auf self_signed gesetzt und tls_fingerprint mit dem SHA-256-Fingerabdruck in Hexadezimal, durch Doppelpunkte getrennt.
Diese Seite zeigt, was der Server angibt Sie ist perfekt, um den Fingerabdruck an Ihr Team zu veröffentlichen, da Sie der Administrator sind. Für sich allein ist sie keine Überprüfung: Wer die Verbindung abfängt, würde seinen eigenen Wert zurückgeben. Was schützt, ist der Vergleich, den jeder Arbeitsplatz zwischen dem tatsächlich vom Server präsentierten Fingerabdruck und dem, den Sie ihm über einen anderen Kanal (internes Chat, mündlich, Team-Wiki) übermittelt haben, anstellt. Der Kommandozeilen-Client macht übrigens beides und warnt Sie, wenn sie sich unterscheiden.

2. Aus den Serverprotokollen

Der Server schreibt den Fingerabdruck bei jedem Start erneut in seine Protokolle. Diese Methode funktioniert unabhängig davon, wo Sie das Datenverzeichnis abgelegt haben:

# Linux (paquet .deb)
sudo journalctl -u uversion-server | grep "TLS fingerprint" | tail -1

# Docker
docker compose logs server | grep "TLS fingerprint" | tail -1

3. In der Datei fingerprint

Diese Datei wird neben dem Zertifikat geschrieben, also im Verzeichnis von [tls] cert_path, wie es in Ihrer config.toml steht. Die Pfade unten sind die Standardwerte: Wenn Sie das Datenverzeichnis verschoben haben, lesen Sie zuerst cert_path in Ihrer Konfiguration.

# Linux, dossier de donnees par defaut
sudo cat /var/lib/uversion/data/tls/fingerprint

# Windows
Get-Content "C:\ProgramData\uVersion\data\tls\fingerprint"

# Docker : chemin fixe par l'entrypoint, sur le volume de donnees
docker compose exec server cat /data/tls/fingerprint

Auf dem Client bestätigen

Einmal pro Arbeitsplatz, und ein für alle Mal. Der Handgriff hängt vom Werkzeug ab.

Desktop-Client

Füllen Sie den Anmeldebildschirm wie gewohnt aus. Bei der ersten Verbindung zu diesem Server öffnet sich, statt Sie anzumelden, ein Fenster Verify server identity. Vergleichen Sie den angezeigten Fingerabdruck mit dem, den Ihr Administrator geteilt hat, und klicken Sie auf Trust this server, wenn sie übereinstimmen: Die Verbindung wird unmittelbar danach von selbst fortgesetzt. Unterscheiden sie sich, Cancel, und fragen Sie nach dem Grund.

Das Fenster Verify server identity des Desktop-Clients: die Serveradresse, der vollständig angezeigte SHA-256-Fingerabdruck, die Serverversion und der TLS-Modus sowie die Schaltflächen Cancel und Trust this server.

CLI uversion

uversion trust https://uversion.example.com:8443          # interactif
uversion trust https://uversion.example.com:8443 --yes    # sans question (CI, script)
uversion trusted                                          # liste les serveurs epingles
uversion login <url>                                      # propose l'epinglage si besoin

uversion trust ist interaktiv: Es zeigt den Host, die Serverversion, den TLS-Modus und den Fingerabdruck an, erinnert daran, mit dem zu vergleichen, was der Administrator übermittelt hat, und wartet dann auf eine Bestätigung y/N. Jede andere Antwort bricht ab, ohne etwas zu pinnen. Die Option --yes überspringt diese Frage, für ein Skript oder Continuous Integration: Sie pinnt, ohne dass jemand hinsieht, und ist einem Netzwerk vorbehalten, das Sie kontrollieren.

uversion login bietet dieselbe Bestätigung von sich aus an, wenn der Server noch nicht gepinnt ist: An einem Arbeitsplatz gibt es in der Regel nichts, was vorher auszuführen wäre.

Unreal-Engine-Plugin

Führen Sie uversion trust <url> einmal in einem Terminal aus, bevor Sie das Projekt öffnen, oder melden Sie sich zuerst über den Desktop-Client an: Das Plugin übernimmt dessen Pinning. Ein nativer Dialog im Editor ist für später geplant.

Rider-Plugin

Es verwendet uversion im Hintergrund. Einmal uversion trust <url>, und Rider läuft durch.

Wenn sich der Fingerabdruck ändert

Der Client weigert sich zu verbinden und sagt es deutlich. Bestätigen Sie nicht aus Reflex erneut: Prüfen Sie zuerst bei Ihrem Administrator, über einen anderen Kanal als die betreffende Verbindung. Drei mögliche Erklärungen: eine Neuinstallation des Servers, eine absichtliche Rotation des Zertifikats oder jemand zwischen Ihren Arbeitsplätzen und Ihrem Server. Sobald Sie die Erklärung haben:

  • Desktop-Client: Schaltfläche Trust new fingerprint im Warndialog.
  • CLI: uversion mistrust <url>, dann uversion login <url>.

Zertifikat neu erzeugen

Das Zertifikat ist standardmäßig zehn Jahre gültig: Es ist keine Erneuerung einzuplanen. Um eine Rotation zu erzwingen (vermutete Kompromittierung, Audit-Anforderung):

# Linux
sudo rm /var/lib/uversion/data/tls/cert.pem /var/lib/uversion/data/tls/key.pem
sudo systemctl restart uversion-server

# Windows
Remove-Item "C:\ProgramData\uVersion\data\tls\cert.pem"
Remove-Item "C:\ProgramData\uVersion\data\tls\key.pem"
Restart-Service uVersionServer

Der Server erzeugt beim Start ein Zertifikat und einen neuen Fingerabdruck neu. Informieren Sie das Team und teilen Sie ihn erneut: Jeder Arbeitsplatz muss erneut bestätigen.

Eigenes Zertifikat bereitstellen

Sie können Ihr eigenes Zertifikat ablegen, ausgestellt von Ihrer internen PKI oder von einer öffentlichen Instanz. Es gibt keine Option zu aktivieren: Beim Start verwendet der Server die Dateien, die an den Pfaden [tls] cert_path und [tls] key_path vorhanden sind, wieder und berechnet den Fingerabdruck neu. Das gilt nur, wenn Ihr Server einen DNS-Namen trägt: Keine Instanz stellt ein Zertifikat für eine private IP-Adresse aus.

Drei Formatvorgaben, von denen jede schon einmal jemandem einen Abend gekostet hat:

  • Die Zertifikatsdatei enthält die vollständige Kette, das Blatt zuerst (die fullchain.pem von certbot hat genau diese Form);
  • der private Schlüssel ist ein unverschlüsseltes PEM: Ein durch eine Passphrase geschützter Schlüssel wird nicht entschlüsselt;
  • legen Sie beide Dateien vor dem Neustart ab. Findet er nur eine, betrachtet der Server den Zustand als unvollständig und erzeugt über der verbliebenen ein selbstsigniertes Paar neu.

Was das für die Arbeitsplätze ändert:

  • Browser: keine Warnung mehr, sofern Sie den Server über den vom Zertifikat getragenen Namen öffnen. Über seine IP-Adresse bleibt die Warnung bestehen.
  • Bereits gepinnte Arbeitsplätze: Der Fingerabdruck ändert sich, also sieht jeder die oben beschriebene Warnung und muss erneut bestätigen. Informieren Sie vor dem Austausch, sonst trifft das ganze Team im selben Moment auf eine Abfangmeldung.
  • Erneuerungen: Jede Erneuerung ändert den Fingerabdruck und startet dieses Ritual erneut, und das Zertifikat wird nur beim Start des Servers neu gelesen. Bei einem öffentlichen Zertifikat mit 90 Tagen sind das sechs teamweite erneute Bestätigungen pro Jahr: Bevorzugen Sie eine lange Laufzeit, solange diese Kosten nicht abgetragen sind.