Wiki
Empreinte TLS
Le serveur génère un certificat auto-signé à l'install. Chaque client confirme son empreinte à la première connexion.
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é.
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.
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.
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.
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>puisuversion 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.pemde 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é.