uVersion
Français
Télécharger →

Wiki

Empreinte TLS

Le serveur génère un certificat auto-signé à l'install. Chaque client confirme son empreinte à la première connexion.

Est-ce sûr ? Oui. Toutes les connexions et tous les transferts de fichiers sont chiffrés : personne sur le réseau ne peut lire ce qui circule entre vos postes et votre serveur. Vos données restent sur votre propre infrastructure : rien n'est hébergé chez un tiers, rien ne transite par uVersion. Seuls les membres de votre équipe, avec leurs identifiants, y accèdent. Et si quelque chose d'anormal se produisait sur la connexion, le logiciel le détecte et bloque immédiatement, au lieu de laisser passer en silence.

uVersion chiffre toutes les connexions en HTTPS par défaut, sans nom de domaine ni certificat acheté. Le serveur génère son certificat au premier démarrage, l'administrateur en partage l'empreinte avec l'équipe, et chaque poste la confirme une fois. C'est le modèle TOFU : confiance au premier contact, exactement comme SSH lorsqu'il vous fait valider l'empreinte d'une machine la première fois. Ensuite, le client la compare à chaque connexion et refuse de parler à un serveur qui aurait changé.

Empreinte du serveur, ou somme de contrôle ? Les deux sont des SHA-256, et c'est ce qui perd tout le monde. L'empreinte du serveur identifie le certificat de votre serveur : elle sert à reconnaître la machine à laquelle vos postes se connectent. Une somme de contrôle vérifie qu'un fichier téléchargé est intact. Cette page ne parle que de la première.

La manipulation tient en deux temps : trouver l'empreinte sur le serveur, une fois, puis la confirmer sur chaque poste, une fois par poste. Le reste de cette page est de la référence, à lire le jour où quelque chose change.

Trouver l'empreinte

Elle est affichée en fin d'installation, à côté du mot de passe admin. Ensuite, trois façons de la retrouver, de la plus simple à la plus manuelle.

1. Depuis un navigateur, sans rien installer

Le serveur expose une page d'information sans authentification : ouvrez https://VOTRE-SERVEUR:8443/api/server-info. Ni sudo, ni accès SSH, ni compte uVersion : c'est de loin le chemin le plus court.

Le navigateur affiche d'abord un avertissement de sécurité. C'est normal et attendu : le certificat est auto-signé, aucune autorité publique ne le connaît. Poursuivez vers le site.

L avertissement de securite du navigateur a la premiere ouverture de l adresse du serveur, avec le lien ou bouton permettant de poursuivre malgre le certificat auto-signe.

La page qui s'affiche ensuite est un bloc de données brut. L'empreinte est la valeur du champ tls_fingerprint : une suite d'octets en hexadécimal séparés par des deux-points. C'est cette chaîne, en entier, que vous transmettrez à l'équipe.

La page /api/server-info ouverte dans un navigateur : les champs version, build_sha, tls_mode a self_signed, et tls_fingerprint portant l empreinte SHA-256 en hexadecimal separe par des deux-points.
Cette page dit ce que le serveur déclare Elle est parfaite pour publier l'empreinte à votre équipe, puisque c'est vous l'administrateur. Elle ne constitue pas à elle seule une vérification : quelqu'un qui intercepterait la connexion renverrait sa propre valeur. Ce qui protège, c'est la comparaison faite par chaque poste entre l'empreinte réellement présentée par le serveur et celle que vous lui avez transmise par un autre canal (messagerie interne, oral, wiki d'équipe). Le client en ligne de commande fait d'ailleurs les deux et vous avertit lorsqu'elles diffèrent.

2. Depuis les journaux du serveur

Le serveur réécrit l'empreinte dans ses journaux à chaque démarrage. Cette méthode fonctionne quel que soit l'endroit où vous avez placé le dossier de données :

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

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

3. Dans le fichier fingerprint

Ce fichier est écrit à côté du certificat, donc dans le répertoire de [tls] cert_path tel qu'il figure dans votre config.toml. Les chemins ci-dessous sont les valeurs par défaut : si vous avez déplacé le dossier de données, lisez d'abord cert_path dans votre configuration.

# 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

Confirmer côté client

Une fois par poste, et une fois pour toutes. Le geste dépend de l'outil.

Client desktop

Remplissez l'écran de connexion normalement. À la première connexion à ce serveur, au lieu de vous connecter, une fenêtre Verify server identity s'ouvre. Comparez l'empreinte affichée avec celle que votre administrateur a partagée, puis cliquez sur Trust this server si elles correspondent : la connexion reprend toute seule dans la foulée. Si elles diffèrent, Cancel, et allez demander pourquoi.

La fenetre Verify server identity du client desktop : l adresse du serveur, l empreinte SHA-256 affichee en entier, la version du serveur et le mode TLS, puis les boutons Cancel et 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 est interactif : il affiche l'hôte, la version du serveur, le mode TLS et l'empreinte, rappelle de comparer avec ce que l'administrateur a transmis, puis attend une confirmation y/N. Toute autre réponse annule sans rien épingler. L'option --yes saute cette question, pour un script ou une intégration continue : elle épingle sans que personne ne regarde, à réserver à un réseau que vous maîtrisez.

uversion login propose la même confirmation de lui-même quand le serveur n'est pas encore épinglé : sur un poste, il n'y a en général rien à lancer avant.

Plugin Unreal Engine

Lancez uversion trust <url> une fois dans un terminal avant d'ouvrir le projet, ou connectez-vous d'abord depuis le client desktop : le plugin suit son épinglage. Un dialogue natif dans l'éditeur est prévu pour plus tard.

Plugin Rider

Il utilise uversion en sous-jacent. Un uversion trust <url> une fois, et Rider passe.

Si l'empreinte change

Le client refuse de se connecter et l'annonce clairement. Ne re-confirmez pas par réflexe : vérifiez d'abord auprès de votre administrateur, par un autre canal que la connexion en question. Trois explications possibles : une réinstallation du serveur, une rotation volontaire du certificat, ou quelqu'un placé entre vos postes et votre serveur. Une fois l'explication obtenue :

  • Client desktop : bouton Trust new fingerprint dans le dialogue d'alerte.
  • CLI : uversion mistrust <url> puis uversion login <url>.

Régénérer le certificat

Le certificat est valable dix ans par défaut : il n'y a aucun renouvellement à prévoir. Pour forcer une rotation (compromission suspectée, exigence d'audit) :

# 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

Le serveur régénère un certificat et une nouvelle empreinte au démarrage. Prévenez l'équipe et repartagez-la : chaque poste devra re-confirmer.

Fournir son propre certificat

Vous pouvez déposer votre propre certificat, émis par votre PKI interne ou par une autorité publique. Il n'y a pas d'option à activer : au démarrage, le serveur réutilise les fichiers présents aux chemins [tls] cert_path et [tls] key_path, et recalcule l'empreinte. Cela ne vaut que si votre serveur porte un nom DNS : aucune autorité n'émet de certificat pour une adresse IP privée.

Trois contraintes de format, chacune ayant déjà coûté une soirée à quelqu'un :

  • le fichier certificat contient la chaîne complète, la feuille en premier (le fullchain.pem de certbot a exactement cette forme) ;
  • la clé privée est un PEM non chiffré : une clé protégée par phrase de passe ne sera pas déchiffrée ;
  • déposez les deux fichiers avant de redémarrer. S'il n'en trouve qu'un, le serveur considère l'état comme incomplet et régénère une paire auto-signée par-dessus celui qui restait.

Ce que cela change pour les postes :

  • Navigateur : plus d'avertissement, à condition d'ouvrir le serveur par le nom porté par le certificat. Par son adresse IP, l'avertissement demeure.
  • Postes déjà épinglés : l'empreinte change, donc chacun verra l'alerte décrite plus haut et devra re-confirmer. Prévenez avant l'échange, sinon toute l'équipe rencontre un message d'interception au même moment.
  • Renouvellements : chaque renouvellement change l'empreinte et relance ce rituel, et le certificat n'est relu qu'au démarrage du serveur. Avec un certificat public de 90 jours, cela fait six re-confirmations générales par an : préférez une durée longue tant que ce coût n'est pas résorbé.