Résoudre les déconnexions du Remote Desktop Gateway sous Windows Server 2019 après KB5040430/1578/3050

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.

Sommaire

Vue d’ensemble du problème

Le redémarrage brutal du service se traduit par les événements critiques suivants :

IDGravitéSourceMessage clé
700CriticalMicrosoft‑Windows‑TerminalServices‑Gateway/AdminException 3221225477 : le service redémarre
103CriticalMicrosoft‑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

AxeActions recommandées
Certificat SSLRe‑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).
ServiceDans 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).
SurveillanceJournaliser 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 TLSLimiter 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 MicrosoftCollecter 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

  1. Lancer mmc.exe et ajouter le composant logiciel enfichable Certificates (Computer).
  2. Déployer Personal → Certificates, double‑cliquer sur votre certificat RD.
  3. Onglet Certification Path : tous les certificats doivent être « This certificate is OK ».
  4. 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.
  5. 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énementImpact
02:14:09ID 700 – tsgateway.exe exception 0xC000000530 s de coupure, 147 sessions perdues
02:14:11ID 103 – certificat inaccessibleÉchec négociation TLS
02:14:34Démarrage automatique du serviceNouvelles connexions possibles
02:15:02ID 202 – New ConnectionSessions 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 :

  1. Installer d’abord sur un serveur de pré‑production.
  2. Executer un test de charge (40 % du trafic normal).
  3. Vérifier qu’aucun nouveau dump n’est généré après 24 h.
  4. 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

CompteurSeuil d’alerteAction
Process \ Handle Count (tsgateway.exe)> 30 000Relancer le service
TCPv4 \ Connections Reset> 50/minInspecter la santé réseau
Web Service \ Current Connections> 90 % du maxScaler 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.
Sommaire