Depuis les mises à jour cumulatives KB5040430, KB5041578 et KB5043050, de nombreux administrateurs constatent un redémarrage inopiné du service Remote Desktop Gateway (RD Gateway) 1 à 2 fois par jour, entraînant la rupture de toutes les sessions RDP en cours.
Vue d’ensemble du problème
Le redémarrage brutal du service se traduit par les événements critiques suivants :
ID | Gravité | Source | Message clé |
---|---|---|---|
700 | Critical | Microsoft‑Windows‑TerminalServices‑Gateway/Admin | Exception 3221225477 : le service redémarre |
103 | Critical | Microsoft‑Windows‑TerminalServices‑Gateway/Operational | « Accès insuffisant au certificat SSL » – erreur 2148073494 |
Symptômes supplémentaires
- Journaux Schannel contenant des erreurs 36888/36884 au moment de la coupure.
- Pics CPU courts (< 5 s) suivis d’une chute brutale de la file d’attente TCP.
- Alertes de supervision indiquant la fermeture du port 443 sur le serveur RD Gateway.
- Vidage mémoire
tsgateway.exe
montrant des appels fréquents àHTTP.sys
puis une violation d’accès (0xC0000005
).
Analyse rapide de la cause racine
La signature « Accès insuffisant au certificat » couplée à l’exception 0xC0000005 oriente vers un défaut de gestion des descripteurs de clé privée dans la pile TLS entre HTTP.sys
et RD Gateway
. Les correctifs KB5040430/78/50 modifient la validation des certificats côté canal sécurisé ; toute perte, corruption ou rotation partielle de certificat exacerbe le problème.
Matrice de contre‑mesures prioritaires
Axe | Actions recommandées |
---|---|
Certificat SSL | Re‑lier le certificat dans RD Gateway Manager → Properties → SSL Certificates. Ouvrir certmgr.msc, cliquer droit sur le certificat, All Tasks → Manage Private Keys et vérifier que NT SERVICE\TSGateway dispose d’au moins Lecture. Renouveler le certificat si la date d’expiration est proche (<30 j) ou si l’algorithme n’est plus conforme (minimum SHA‑256, clé 2048 bits). |
Service | Dans services.msc, onglet Recovery, définir « Restart the Service » pour les trois tentatives d’échec. Programmer un redémarrage planifié en heures creuses :Restart-Service -Name TSGateway -Force |
Rollback temporaire | Désinstaller KB5040430 (ou le cumul le plus récent) via wusa /uninstall /kb:5040430. Masquer provisoirement la mise à jour Windows Update à l’aide de Show or Hide Troubleshooter (wushowhide.diagcab). |
Surveillance | Journaliser Event ID 700 et 103 dans un tableau de bord (Grafana/Elastic). Activer les dumps automatiques :procdump -e -ma -w tsgateway.exe C:\Dumps |
Durcissement TLS | Limiter les suites TLS aux versions 1.2/1.3 et désactiver TLS 1.0/1.1 via le registre :[HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols] Vérifier qu’aucun proxy TLS n’effectue d’inspection ou de réécriture des certificats. |
Support Microsoft | Collecter Get‑HotFix, SystemInfo et msinfo32 /nfo. Ouvrir un ticket : ID du plantage, fréquence, fichier dump & versions complètes. |
Étape par étape : validation de la chaîne de certificats
- Lancer
mmc.exe
et ajouter le composant logiciel enfichable Certificates (Computer). - Déployer Personal → Certificates, double‑cliquer sur votre certificat RD.
- Onglet Certification Path : tous les certificats doivent être « This certificate is OK ».
- Si une autorité racine interne est utilisée, importer manuellement la racine et l’intermédiaire dans Trusted Root Certification Authorities et Intermediate Certification Authorities.
- Relancer
net stop tsgateway && net start tsgateway
.
Restaurer automatiquement les droits au démarrage
Insérez le script suivant dans une tâche planifiée At Startup ou via GPO (Scripts – Startup) :
param(
[string]$Thumb = 'VOTRE_THUMBPRINT'
)
$svc = 'NT SERVICE\TSGateway'
$cert = Get-Item "Cert:\LocalMachine\My\$Thumb"
$acl = Get-Acl $cert.PSPath
if ($acl.Access.IdentityReference -notcontains $svc) {
$rule = New-Object System.Security.AccessControl.FileSystemAccessRule($svc,'Read','Allow')
$acl.AddAccessRule($rule)
Set-Acl -Path $cert.PSPath -AclObject $acl
}
Rollback contrôlé et sécurité compensatoire
Un retour arrière présente toujours un risque de ré‑introduction de vulnérabilités corrigées ; appliquez au minimum les mesures suivantes pendant la période de rollback :
- Restreindre les adresses IP autorisées sur le pare‑feu RD Gateway.
- Appliquer la logique JIT (Just‑In‑Time) access pour limiter la fenêtre d’ouverture du port 443.
- Augmenter le niveau de journalisation Audit Success/Failure pour la passerelle.
Scénario de régression : analyse chronologique
Horodatage (UTC) | Événement | Impact |
---|---|---|
02:14:09 | ID 700 – tsgateway.exe exception 0xC0000005 | 30 s de coupure, 147 sessions perdues |
02:14:11 | ID 103 – certificat inaccessible | Échec négociation TLS |
02:14:34 | Démarrage automatique du service | Nouvelles connexions possibles |
02:15:02 | ID 202 – New Connection | Sessions ré‑établies |
Surveillance proactive
Pour éviter une détection réactive, mettez en place :
- Compteurs PerfMon : Web Service Current Connections, HTTP Service Requests, Process\Handle Count.
- Alertes Event Log temps réel via Windows Event Forwarding + Azure Log Analytics.
- Script de test synthétique toutes les 5 min :
Test-NetConnection -ComputerName yourgateway.fqdn -Port 443
, notifier si échec > 2 tests.
Optimisation de la configuration RD Gateway
Limiter les canaux RDP inutiles
Bloquez Clipboard, Drive Redirection, Audio et LPT si non requis pour réduire la bande passante et la charge CPU.
Implémenter le pré‑authentification NPS
Activez la stratégie Request Clients to send Network Access Server (NAS) IPv6 pour durcir la communication NPS ↔ RD Gateway.
Tuning HTTP.sys
Pour certains environnements à fort volume, augmentez MaxConnections
et ReceiveTimeout
dans HKLM\SYSTEM\CurrentControlSet\Services\HTTP\Parameters, puis redémarrez.
Validation de la correction Microsoft
Sur le Windows Release Health Dashboard, Microsoft classe le bug « RD Gateway stops responding with TLS certificate error » comme Known Issue. Lorsque le patch hors cycle sortira :
- Installer d’abord sur un serveur de pré‑production.
- Executer un test de charge (40 % du trafic normal).
- Vérifier qu’aucun nouveau dump n’est généré après 24 h.
- Déployer ensuite en production avec une fenêtre de maintenance annoncée.
FAQ rapide
Quelle différence entre l’événement 700 et 103 ?
700 signale l’exception non gérée qui tue le processus ; 103 correspond à l’erreur de certificat détectée au redémarrage, mais pas forcément la cause initiale.
Pourquoi uniquement Windows Server 2019 est affecté ?
Les fonctions legacy de vérification TLS dans 2019 n’ont pas reçu l’optimisation présente dans 2022, rendant 2019 plus sensible à une mauvaise ACL de clé privée après KB5040430.
Le passage à TLS 1.3 résout‑il le problème ?
Non ; le bug est déclenché avant la négociation TLS, lors de l’accès à la clé privée. TLS 1.3 n’élimine pas la dépendance au certificat.
Conclusion
En attendant un correctif officiel, la combinaison d’un certificat valide, d’autorisations correctes sur la clé privée et d’un redémarrage planifié permet de garantir la continuité de service. Surveillez de près vos journaux, automatisez les correctifs ACL et préparez un rollback documenté : votre passerelle RD Gateway restera disponible même sous Windows Server 2019 avec les derniers patchs cumulés.
Annexes techniques
Étude de la pile d’appels (extrait Windbg)
FAULTING_IP:
HTTP!HttpGetServerCertKey+34
fffff807`0b1f7c74 488b8900140000 mov rcx,qword ptr [rcx+140h]
STACK\_TEXT:
ffffd504`37db1a08 fffff807`0b1de760 : 00000000`00000000 00000000`00000000 ...
ffffd504`37db1a10 fffff807`0b236b41 : fffff807`0b27b000 fffff807`0b27b000 ...
ffffd504`37db1a50 fffff807`0b1ecf1b : 00000000`00000000 00000000`00000000 ...
ffffd504`37db1aa0 fffff807`0b1ece59 : 00000000`00000000 00000000`00000000 ...
ffffd504`37db1af0 fffff807`0b1ec956 : 00000000`00000000 00000000`00000000 ...
ffffd504`37db1b40 fffff807`0b1f2c52 : ffffd504`37db1ce0 00000000`00000000 ...
ffffd504`37db1bb0 fffff807`0b1f2aee : 00000000`00000000 00000000`00000000 ...
ffffd504`37db1c40 fffff807`0b1f27ed : ffffae8d`b42b8030 00000000`00000000 ...
ffffd504`37db1cf0 fffff807`0b1e9fb5 : 00000000`00000000 00000000`00000000 ...
ffffd504`37db1d40 fffff801`32171af0 : ffffae8d`b42b8030 ffffae8d`b42b8000 ...
ffffd504`37db1d60 00007ff9`0000002a : 00000000`00000000 00000000`00000000 ...
Symbol search path is: srv\*
Performance counters recommandés
Compteur | Seuil d’alerte | Action |
---|---|---|
Process \ Handle Count (tsgateway.exe) | > 30 000 | Relancer le service |
TCPv4 \ Connections Reset | > 50/min | Inspecter la santé réseau |
Web Service \ Current Connections | > 90 % du max | Scaler horizontalement |
Liste de contrôle pré‑migration vers Windows Server 2022
- Virtualisation Generation‑2, UEFI + Secure Boot actifs.
- Mise à jour firmware iDRAC/ILO pour activer SHA‑2.
- Compatibilité applicative pour Network Level Authentication obligatoire.
- Validation du TLS Encryption Level – mandatory encryption.