Wiki
TLS-Fingerabdruck
Der Server erzeugt bei der Installation ein selbstsigniertes Zertifikat. Jeder Client bestätigt dessen Fingerabdruck bei der ersten Verbindung.
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.
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 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.
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.
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>, dannuversion 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.pemvon 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.