Полгода поисков и одна политика в итоге. Полезный разбор, потому что сообщение «An internal error has occurred» само по себе ничего не говорит.
Что было. К одним и тем же серверам подключение по RDP с Windows Server 2016 и Windows 10 работало, а с Windows Server 2019 и Windows 11 сразу заканчивалось внутренней ошибкой. Домен, групповые политики безопасности накопились за годы.
Что перепробовали без результата. Сравнение наборов шифров, локальные и доменные политики, удаление машинных ключей RSA, обновления, sfc и dism, повторный ввод в домен, отключение UDP для RDP, удаление самоподписанного сертификата RDP, включение и выключение NLA, смена режима согласования безопасности RDP. Журналы удалённого рабочего стола молчали.
Где нашли. В системном журнале, источник Schannel, событие 36874: «получен запрос на подключение, но ни один из наборов шифров, поддерживаемых клиентом, не поддерживается сервером». Новые версии Windows изменили набор шифров для RDP, а старое доменное ужесточение безопасности оставило на серверах только те, которых у новых клиентов уже нет.
Что помогло. Политика «Системная криптография: использовать FIPS-совместимые алгоритмы для шифрования, хеширования и подписи» в состоянии «Включено», применённая ко всем машинам домена, с перезагрузкой. Проверить можно локально через «Локальную политику безопасности» до раскатки. Автор подтвердил в феврале 2024 года.
Предупреждение из той же темы. В сети часто советуют отключить TLS 1.3 через реестр в разделе SecurityProviders\SCHANNEL. Автор проверил: это ломает RDP, а не лечит.
Порядок действий для вашей «внутренней ошибки».
- Системный журнал, источник Schannel, за минуту попытки подключения. Событие 36874 или 36871 сразу переводит разговор в область шифров и TLS.
- Сравнить, с каких клиентов работает, а с каких нет: разница версий Windows и есть подсказка.
- Смотреть доменные политики безопасности на серверах, а не переустанавливать клиентов.
Общий порядок диагностики описан в документации Microsoft.