Serveur Minecraft : corriger « Failed to request yggdrasil public key – AuthenticationUnavailableException » après changement de routeur

Après un changement de routeur, votre serveur Minecraft n’arrive plus à joindre Yggdrasil (Mojang) et affiche une erreur d’authentification. Voici une méthode structurée, reproductible et exhaustive pour diagnostiquer puis corriger la cause réseau ou logicielle.

Sommaire

Problème de connexion d’un serveur Minecraft auto‑hébergé à Yggdrasil

Vue d’ensemble de la question

Symptôme observé côté serveur :

Failed to request yggdrasil public key – AuthenticationUnavailableException: Cannot contact authentication server

Contexte typique : le serveur Minecraft fonctionnait jusqu’au remplacement du routeur. Les tentatives suivantes n’ont pas résolu le problème : désactivation du pare‑feu Windows, vidage du cache DNS, désactivation d’IPv6.

Traduction technique de l’erreur : le processus Java de votre serveur n’arrive pas à établir (ou valider) une connexion HTTPS vers les services Mojang/Yggdrasil (par ex. authserver.mojang.com, sessionserver.mojang.com). La cause se situe presque toujours dans l’un de ces domaines :

  • Filtrage TLS/HTTP(S) ou proxy/antivirus interposés (routeur, “WebSafe”, contrôle parental, proxy d’entreprise, DNS filtrant, Pi‑hole, DoH/DoT forcé, inspection SSL, QoS agressif, etc.).
  • Résolution DNS incorrecte (serveur DNS du routeur défaillant, empoisonnement de cache, redirection vers une page de blocage ou walled garden du FAI, DNS menteur).
  • Horloge système désynchronisée, entraînant un rejet de la négociation TLS et des jetons OAuth.
  • Environnement Java obsolète/cassé (ciphers/TLS, truststore), ou composant serveur (Paper/Spigot) dépassé.
  • Problèmes d’adressage locaux : NAT loopback manquante pour les clients LAN qui se connectent via l’IP publique.

Réponse & solutions proposées

ÉtapeObjectifDétails
1. Démarrage en “clean boot”Écarter l’influence d’un logiciel tiers (antivirus, proxy, VPN, filtre parental, etc.)Démarrer Windows avec les seuls services Microsoft activés, puis tester la connexion. Si le problème disparaît, réactiver les services un par un pour identifier le coupable.
2. Vérifier l’accès HTTPS sortantYggdrasil utilise les API Mojang sur les ports 443 (TLS)Depuis le poste hôte : curl https://authserver.mojang.com --head et https://sessionserver.mojang.com --head doivent répondre en 200/204. Sur le routeur, désactiver tout filtrage “WebSafe/Parental Control” ou QoS bloquant TLS.
3. Contrôler la résolution DNSUn DNS corrompu empêche la connexionnslookup authserver.mojang.com doit retourner une adresse AWS. En cas d’échec, passer temporairement aux DNS publics (Cloudflare 1.1.1.1, Google 8.8.8.8) dans la carte réseau ou le routeur.
4. Synchroniser l’horloge systèmeLes jetons OAuth de Mojang sont sensibles au décalage horaireVérifier que l’horloge Windows est réglée automatiquement sur un serveur NTP fiable.
5. Inspecter le fichier hostsÉliminer les remappages locauxS’assurer qu’aucune ligne concernant mojang.com n’est présente dans %SystemRoot%\System32\drivers\etc\hosts.
6. Mettre à jour Java & MinecraftÉviter un TLS obsolèteInstaller la dernière version de Java 17 (ou la version requise par votre serveur). Mettre à jour le serveur Minecraft (Spigot/Paper/etc.).
7. Test direct sans routeurConfirmer la cause matérielleConnecter temporairement le PC hôte directement au modem (ou partager la 4G), relancer le serveur et tenter la connexion :
• Si cela fonctionne, la configuration du nouveau routeur est en cause (firewall, DNS, NAT loopback).
• Sinon, le problème vient du PC ou du réseau du FAI.
8. Vérifier la redirection NAT loopback (si clients internes)Permettre aux joueurs du même réseau local de se connecter par l’IP publiqueActiver “NAT loopback / hairpin NAT” ou utiliser l’IP locale plutôt que l’IP WAN.

Ce qui se passe côté Yggdrasil (plongée rapide)

Pour autoriser les connexions online-mode, votre serveur interroge Yggdrasil (API Mojang) pour valider les comptes joueurs et récupérer des clés publiques. Ce dialogue repose exclusivement sur HTTPS (TLS 1.2/1.3) et la validation de certificats via la truststore Java. Toute interception TLS (filtre parental, antivirus avec “inspection SSL”, proxy d’entreprise, routeur réalisant une réécriture SNI) rompt la confiance et déclenche des exceptions du type AuthenticationUnavailableException, SSLHandshakeException ou PKIX path building failed.

Procédures détaillées — pas à pas

Démarrage en “clean boot” (Windows)

  1. Appuyez sur Win + R, tapez msconfig et validez.
  2. Onglet Services : cochez Masquer tous les services Microsoft, puis cliquez sur Désactiver tout.
  3. Onglet Démarrage > Gestionnaire des tâches : désactivez les éléments non Microsoft.
  4. Redémarrez, relancez le serveur Minecraft et testez.

Si l’authentification fonctionne en clean boot, réactivez les services par lot (par ex. antivirus, VPN, proxy, accélérateurs, filtrage DNS local) jusqu’à isoler celui qui casse le TLS sortant.

Tester l’accès HTTPS vers Yggdrasil

Depuis la machine hôte (PowerShell ou CMD) :

curl https://authserver.mojang.com --head
curl https://sessionserver.mojang.com --head
curl https://api.minecraftservices.com --head

Résultat attendu : un code 200 ou 204 avec des en‑têtes TLS valides. Si vous voyez un portail captif, une page de blocage ou un certificat émis par le routeur/antivirus, vous avez trouvé l’origine.

Alternative PowerShell (utile sur machines sans cURL moderne) :

Test-NetConnection -ComputerName authserver.mojang.com -Port 443
try { (Invoke-WebRequest https://authserver.mojang.com -Method Head -TimeoutSec 10).StatusCode } catch { $_.Exception.Message }

Contrôler la résolution DNS

La chaîne la plus solide casse si le maillon DNS est faible. Vérifiez :

nslookup authserver.mojang.com
nslookup sessionserver.mojang.com
ipconfig /all

Si la résolution échoue ou renvoie une IP non routable/privée, basculez temporairement en DNS publics (au niveau de l’interface réseau Windows ou du routeur) : 1.1.1.1 et 8.8.8.8. Purgez ensuite les caches :

ipconfig /flushdns
net stop dnscache && net start dnscache

Certains routeurs appliquent des listes de blocage (adblock/“protection famille”) côté DNS ; mettez en liste d’autorisation les domaines Mojang (voir plus bas) et désactivez toute réécriture DNS (DNS‑over‑HTTPS forcé, DNS menteur, redirection NXDOMAIN).

Synchroniser l’horloge Windows

Un écart de quelques minutes suffit à invalider les certificats ou tokens OAuth. Exécutez :

timedate.cpl
w32tm /query /status
w32tm /config /update /manualpeerlist:"time.windows.com time.google.com" /syncfromflags:manual
w32tm /resync

Assurez‑vous que le BIOS/UEFI et Windows sont en UTC cohérente (surtout après changements matériels).

Inspecter le fichier hosts

Ouvrez %SystemRoot%\System32\drivers\etc\hosts avec un éditeur en mode administrateur et supprimez toute entrée concernant mojang.com, minecraft.net ou les domaines listés ci‑dessous. Sauvegardez puis :

ipconfig /flushdns

Mettre à jour Java et votre serveur

Vérifiez votre version Java :

java -version

Installez Java 17 (ou la version requise par votre distribution serveur) depuis une source officielle. Supprimez les anciennes versions si possible pour éviter les conflits de truststore. Mettez aussi à jour Paper/Spigot et vos plugins ; les versions récentes utilisent les API modernes des services Minecraft.

Bypass du routeur (test sans routeur)

Ce test tranche rapidement :

  • Branchez le PC directement sur le modem du FAI (si possible) ou partagez la connexion 4G d’un smartphone par USB/Wi‑Fi, puis relancez le serveur et tentez l’authentification.
  • Si tout fonctionne sans le routeur, celui‑ci est le coupable (filtrage TLS, DNS, inspection, QoS, MTU…).

NAT loopback pour les clients LAN

Les joueurs sur le même LAN qui tentent de rejoindre via l’IP publique peuvent échouer si le routeur ne supporte pas la boucle de cheveux (hairpin NAT). Solutions :

  • Dans le routeur, activez l’option NAT loopback (parfois appelée NAT reflection / hairpin NAT).
  • Ou bien demandez aux clients LAN d’utiliser l’IP privée du serveur (192.168.x.x) au lieu de l’IP WAN.
  • Ou mettez en place une entrée DNS locale (split‑DNS) qui résout votre domaine public vers l’IP privée à l’intérieur du LAN.

Vérifications routeur courantes

Les firmwares récents activent parfois par défaut des protections qui cassent le trafic sortant chiffré ou la résolution :

  • Contrôle parental / WebSafe / SafeBrowse : désactivez‑le ou créez une liste d’autorisation pour les domaines Mojang.
  • DNS filtrant (adblock, DoH/DoT forcé) : neutralisez les redirections, testez avec DNS publics et un simple forwarder non filtrant.
  • Inspection TLS / Proxy transparent : désactivez la détection SNI/“SSL inspection”. L’authentification Mojang ne tolère pas l’interception.
  • QoS/Traffic shaping agressif sur 443 : testez sans QoS, certains algorithmes basés sur l’empreinte TLS (JA3) bloquent des clients Java.
  • Protection anti‑rebinding : vérifiez qu’elle n’interfère pas avec vos noms internes (si vous utilisez un domaine privé).
  • MTU/MSS clamping : en cas de symptômes intermittents, fixez un MSS ajusté (p. ex. 1452) sur l’interface WAN et retestez.

Diagnostic avancé

Augmenter la verbosité réseau Java

Lancez votre serveur avec :

set JAVA_TOOL_OPTIONS=-Djava.net.debug=all
java -Xmx4G -Xms4G -jar paper.jar nogui

Recherchez dans la sortie les lignes relatives à authserver.mojang.com / sessionserver.mojang.com : résolution DNS, échec de handshake, ciphers refusés, certificat inconnu, etc.

Paramètre JVM utile (cas SNI filtré)

Si un routeur/proxy filtre des en‑têtes, ce paramètre peut permettre un diagnostic (pas un correctif durable) :

-Djdk.httpclient.allowRestrictedHeaders

Idéalement, corrigez la configuration réseau plutôt que de contourner le filtrage.

Vérifier la truststore Java

Un PKIX path building failed indique souvent une truststore corrompue/obsolète :

"%JAVA_HOME%\bin\keytool" -list -keystore "%JAVA_HOME%\lib\security\cacerts" -storepass changeit | more

Si votre Java vient d’un paquetage exotique, basculez sur une distribution bien maintenue (Adoptium/Temurin, Microsoft Build of OpenJDK, etc.).

Pare‑feu Windows (sortant)

Par défaut, Windows autorise les flux sortants. Si une stratégie de sécurité les bloque, ajoutez des règles de sortie pour java.exe sur le port 443 TCP et testez à nouveau.

Tableau de correspondance erreurs → causes probables

Message ou symptômeCause la plus probableAction immédiate
AuthenticationUnavailableExceptionImpossible de joindre les serveurs Yggdrasil (blocage TLS/DNS)Tester curl --head, désactiver filtrage routeur, changer DNS
SSLHandshakeException / certificate unknownInspection SSL/Proxy, certificat non approuvé, horloge système fausseDésactiver inspection, resynchroniser l’horloge, vérifier truststore
Résolution lente/échecs aléatoiresDNS routeur instable, adblock DNS, DoH/DoT mal configuréFixer DNS 1.1.1.1/8.8.8.8, vider cache, liste d’autorisation
Clients LAN ne se connectent pas via IP publiqueNAT loopback absenteActiver hairpin NAT ou utiliser IP privée
PKIX path building failedJava truststore cassée/obsolèteMettre à jour Java, réinstaller cacerts

Informations complémentaires utiles

  • Liste des domaines à autoriser : authserver.mojang.com, sessionserver.mojang.com, textures.minecraft.net, api.minecraftservices.com. Tous utilisent HTTPS (port 443).
  • Paramètre JVM : si vous utilisez une version récente de Java avec un routeur filtrant le SNI TLS, ajouter -Djdk.httpclient.allowRestrictedHeaders peut contourner certains problèmes, mais il est préférable de corriger la configuration réseau.
  • Logs plus verbeux : lancer le serveur avec la variable d’environnement JAVA_TOOL_OPTIONS="-Djava.net.debug=all" pour inspecter la résolution DNS et la négociation TLS.

Check‑list de dépannage rapide

  1. Tester curl --head sur les quatre domaines clés et confirmer les codes 200/204.
  2. Passer provisoirement en DNS publics, purger ipconfig /flushdns, retester.
  3. Resynchroniser l’horloge Windows avec w32tm /resync.
  4. Neutraliser temporairement antivirus/inspection SSL/proxy, puis réactiver progressivement.
  5. Mettre à jour Java 17 et votre distribution serveur (Paper/Spigot).
  6. Contourner le routeur (tethering 4G ou modem direct). Si OK, corriger la configuration du routeur.
  7. Pour les joueurs LAN : activer le hairpin NAT ou utiliser l’IP locale.

Bonnes pratiques pour éviter les régressions

  • Documenter votre configuration routeur (export/backup) avant tout changement de firmware ou de pare‑feu.
  • Éviter les “suites de sécurité” qui interceptent TLS sur un serveur de jeux ; préférez un antivirus léger sans inspection SSL.
  • Centraliser la résolution DNS (unbound/dnsmasq) sans filtres agressifs ; les listes de blocage peuvent être appliquées aux clients, pas au serveur.
  • Automatiser la mise à jour de Java et du serveur (scripts, service Windows) pour rester compatible avec les exigences TLS modernes.
  • Surveiller les logs serveur et exporter régulièrement les fichiers de configuration.

Exemples de commandes utiles (bloc mémo)

:: Tests HTTP(S)
curl https://authserver.mojang.com --head
curl https://sessionserver.mojang.com --head
curl https://api.minecraftservices.com --head

:: DNS & réseau
nslookup authserver.mojang.com
ipconfig /all
ipconfig /flushdns
tracert authserver.mojang.com

:: Temps & services
w32tm /query /status
w32tm /resync

:: Lancement Java verbeux
set JAVA_TOOL_OPTIONS=-Djava.net.debug=all
java -Xmx4G -Xms4G -jar paper.jar nogui 

FAQ

Faut‑il désactiver IPv6 ?
Non par principe. Minecraft/Yggdrasil fonctionne en IPv4 et IPv6. Désactiver IPv6 masque souvent un vrai problème (DNS ou filtrage TLS) sans le résoudre réellement.

Le pare‑feu Windows peut‑il bloquer ?
Rarement en sortie (règle par défaut : autoriser). Si une stratégie de sécurité a inversé ce comportement, autorisez java.exe vers TCP/443.

Dois‑je ouvrir des ports entrants pour l’authentification ?
Non. L’authentification utilise des connexions sortantes depuis votre serveur vers les services Mojang. Les ports entrants concernent uniquement les joueurs qui rejoignent votre serveur (par défaut TCP/25565).

Pourquoi cela a‑t‑il commencé après le changement de routeur ?
Parce que de nombreux routeurs activent par défaut des protections (contrôle parental, filtre DNS, inspection TLS, QoS) qui perturbent les clients Java. Désactivez/ajustez ces fonctions pour le serveur.

Le message mentionne la “public key” Yggdrasil ; est‑ce un problème de clé côté serveur ?
Non. La “public key” est récupérée auprès des serveurs Mojang via HTTPS. Si la requête échoue, c’est un souci de transport (DNS/TLS/filtrage), pas une clé manquante côté serveur Minecraft.

Conclusion

En appliquant rigoureusement les étapes ci‑dessus, vous identifierez rapidement la cause de Failed to request yggdrasil public key – AuthenticationUnavailableException : le plus souvent un filtre HTTPS du nouveau routeur, une résolution DNS incorrecte ou un logiciel de sécurité tiers bloquant la requête TLS sortante. Validez d’abord la connectivité HTTPS et la résolution DNS, resynchronisez l’horloge, puis isolez le coupable via un clean boot et un test sans routeur. Enfin, activez le hairpin NAT pour les clients locaux. Une fois ces points corrigés, l’authentification Yggdrasil redevient fiable et vos joueurs peuvent se connecter en ligne en toute sérénité.

Sommaire