Le but de cet article est de faire un rapide point sur l'erreur 7054 lors de la prise de contrôle dans une session Terminal Server sur une machine Windows Server 2003.
Description :
Erreur 7054 avec le message suivant : "le nombre maximal d'ouverture de session autorise sous licence est atteint sur ce système. Veuillez recommencer ultérieurement." ("The system has reached its licensed logon limit. Please try later.") lorsqu'un administrateur essaye de prendre le contrôle à distance d'une session sur un Terminal Server Windows Server 2003.
Cette erreur peut survenir avec des licences d'accès (CAL) "par utilisateur" (Per User), et ce bien qu'un serveur de licence Terminal Server soit disponible, activé et correctement configuré.
L'origine de cette erreur est liée au certificat x509 utilisé par le serveur de licence Terminal Server qui a été activé par Internet (Activation Automatique). Ce certificat est signé avec un algorithme qui n'est pas correctement géré par le serveur Terminal Server 2003. Ce problème ne se produit pas avec Terminal Server Windows Server 2008 et versions ultérieures.
Solution :
- Installer le rôle TS/RDS (Remote Desktop Services ou Services de Bureau à Distance) Licensing sur un serveur 2008 SP2 ou 2008 R2 SP1 (après avoir installé tous les correctifs de sécurité via WSUS ou Windows Update).
- Activer le serveur de licence TS/RDS uniquement par téléphone. En effet, si l'activation est effectuée via Internet, le serveur de licence RDS/TS aura un certificat x509 du type "CN=Microsoft Assurance Designation Root 1 2011, O=Microsoft Corporation, L=Redmond, S=Washington, C=US" au lieu d'un certificat auto-signé. C'est ce certificat (CN=Microsoft Assurance Designation Root 1 2011, O=Microsoft Corporation, L=Redmond, S=Washington, C=US) qui ne doit pas être téléchargé et installé.
- Ensuite il ne faut surtout pas activer le pack de licence "par utilisateur" via la procédure Automatique (Internet) pour 2003 mais uniquement via téléphone. Sinon le "mauvais" certificat sera dynamiquement téléchargé et installé depuis Internet.
- Enfin, il faut forcer les serveurs TSE 2003 à pointer sur ce serveur de licence TS/RDS après avoir purgé les certificats X509 en cache.
Pour forcer l'utilisation d'un serveur de licence TS :
- soit par stratégie de groupe dans "configuration ordinateur / Stratégie / Modèles d'administration / Composants Windows / Services Bureau à distance / Hôte de la session Bureau à distance / Gestionnaire de licences" avec "Définir le mode de concession de licences des services Bureau à distance" et "Utiliser les serveurs de licences Bureau à distance indiqués".
- soit dans le registre du serveur TSE 2003 dans HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\TermService\Parameters\LicenseServers, créer une sous-clé pour le serveur de licence, soit en spécifiant le nom NetBIOS, soit le nom FQDN, soit l'adresse IP fixe. Par exemple cela donnerait pour un serveur de licence nommé RDSL2K8 :
Pour purger le certificat du serveur de licence TS/RDS stocké par le serveur TSE 2003
Il est recommandé de sauvegarder (exporter) les clés de registre avant de les modifier et/ou supprimer.
Il faut supprimer les trois valeurs suivantes, sur le TSE 2003, dans la clé HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\TermService\Parameters , puis redémarrer le serveur TSE 2003 afin qu'il obtiennent les nouveaux certificats à partir du serveur de licence TS/RDS:
- REG_DWORD Certificate
- REG_DWORD X509 Certificate
- REG_DWORD X509 Certificate ID
Pour s'assurer que le serveur TSE a récupéré un certificat 'valide'
- double cliquer sur la valeur "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\TermService\Parameters\X509 Certificate" et dans l'affichage du contenu le nom du serveur de licence TS/RDS doit apparaître et non pas un nom du type " Washington".
- Voici un exemple de certificat "correct" :
- Voici un exemple de certificat qui pose problème :
En respectant toutes les étapes, il sera possible de prendre le contrôle d'une session utilisateur par un administrateur sur un TS 2003.