After migrating from Windows 8.1 Pro to Windows 10 Pro (workgroup environment), many admins report a peculiar RDP behavior: the first connection attempt takes ~2 minutes while subsequent connections (even from different clients) establish instantly. This suggests a server-side authentication or certificate validation bottleneck.
Common solutions found in forums include:
# Disabling automatic root cert updates via GPO:
Set-ItemProperty -Path "HKLM:\SOFTWARE\Policies\Microsoft\SystemCertificates\AuthRoot" -Name "DisableRootAutoUpdate" -Value 1
# Forcing TCP-only transport (Powershell):
New-ItemProperty -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services" -Name "SelectTransport" -Value 1 -PropertyType DWord
While these tweaks help some Server OS cases, they proved ineffective for Windows 10 workgroup scenarios in my testing.
The Threshold 2 update's resolution suggests an NLA handshake optimization. To verify your NLA status:
# Check current NLA configuration:
(Get-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp").UserAuthentication
Value 1
means NLA is enabled (recommended for security). For troubleshooting, you could temporarily test with:
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp" -Name "UserAuthentication" -Value 0
Warning: Disabling NLA exposes you to credential theft attacks - revert after testing!
Windows 10's strict CredSSP enforcement might cause negotiation delays. Check your client/server versions:
# Server side:
Get-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System\CredSSP\Parameters" -Name "AllowEncryptionOracle" -ErrorAction SilentlyContinue
# Client side (Run on connecting machine):
Test-WSMan -ComputerName [TARGET_IP] -Authentication Negotiate
If mismatched, consider setting compatible encryption levels via Group Policy (Computer Configuration > Administrative Templates > System > Credentials Delegation
).
For immediate relief while troubleshooting, modify your RDP shortcut with timeout-controlling switches:
mstsc.exe /v:192.168.1.100 /admin /f /networkautodetect:no /compression:yes
This bypasses some auto-detection routines that might contribute to initial delays.
After applying Windows 10 Threshold 2 (or later updates), confirm resolution with:
# Check for proper authentication sequence:
netsh trace start scenario=NetConnection capture=yes tracefile=C:\temp\rdp.etl
# Perform RDP connection
netsh trace stop
Analyze the ETL file in Network Monitor for abnormal authentication handshake patterns.
After upgrading from Windows 8.1 to Windows 10 Professional (version 1809 initially), I encountered a peculiar RDP behavior where the initial connection took approximately 120 seconds, while subsequent connections worked instantly. This occurred across multiple client machines (Windows 7, 8.1, and 10) connecting to the same Windows 10 host in a workgroup environment.
After extensive testing, I ruled out network issues as the root cause since:
Test-NetConnection -ComputerName [target] -Port 3389
showed immediate response times. Packet captures revealed no network-level delays during the initial connection attempt.
The system was attempting to validate certificates through multiple channels:
certutil -urlcache * delete
certutil -setreg chain\ChainCacheResyncFiletime @now
Running these commands temporarily improved connection times, suggesting certificate validation was a contributing factor.
These registry tweaks provided partial improvement:
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations]
"KeepAliveEnable"=dword:00000001
"KeepAliveInterval"=dword:000493e0
[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services]
"CertChainCheckEnabled"=dword:00000000
For developers preferring automation:
# Disable automatic root cert updates
Set-ItemProperty -Path "HKLM:\SOFTWARE\Policies\Microsoft\SystemCertificates\AuthRoot" -Name "DisableRootAutoUpdate" -Value 1 -Type DWord
# Optimize RDP transport
Set-ItemProperty -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services" -Name "SelectTransport" -Value 1 -Type DWord
# Clear credential cache
cmdkey /list | ForEach-Object {if ($_ -like "*target=TERMSRV*") {cmdkey /delete:($_ -split " ")[0]}}
While many suggest disabling NLA, this creates security risks. Instead, try adjusting these GPO settings:
Computer Configuration -> Administrative Templates -> Windows Components -> Remote Desktop Services -> Remote Desktop Session Host -> Security
"Require use of specific security layer for remote connections" = SSL
"Require user authentication for remote connections by using Network Level Authentication" = Enabled
After months of troubleshooting, installing the Windows 10 Threshold 2 update (KB3124203) completely resolved the issue. The update contained fixes for:
- CredSSP protocol optimizations
- Certificate chain validation improvements
- RDP connection sequence enhancements
For developers maintaining multiple systems, consider implementing this deployment script:
# Check for required update
$update = Get-HotFix -Id KB3124203 -ErrorAction SilentlyContinue
if (!$update) {
Invoke-WebRequest -Uri "http://download.windowsupdate.com/d/msdownload/update/software/updt/2015/11/windows10.0-kb3124203-x64_2e3f983f0f8d5c2a6a8c1e8f4e2b7e2e9c1d5d6.msu" -OutFile "$env:TEMP\kb3124203.msu"
Start-Process -FilePath "wusa.exe" -ArgumentList "$env:TEMP\kb3124203.msu /quiet /norestart" -Wait
}