Настройка SSL/TLS сертификатов для RDP/RDS подключений в Windows Server позволяет повысить безопасность и устранить предупреждения о недоверенных сертификатах. В этой статье описано, как заменить самоподписанный сертификат на доверенный, настроить автоматическую выдачу сертификатов через корпоративный Центр сертификации (CA) и управлять ими с помощью групповых политик (GPO). Также рассмотрим подписывание RDP-файлов для предотвращения уведомлений на клиентских устройствах.
Проблемы с самоподписанными сертификатами
По умолчанию Windows Server генерирует самоподписанный SSL/TLS сертификат для шифрования RDP-соединений. При подключении через клиент mstsc.exe пользователи видят предупреждение:
Не удалось проверить подлинность удаленного компьютера из-за проблем с сертификатом безопасности. Сертификат выдан не имеющим доверия центром сертификации.
Пользователь должен нажать Да для продолжения или включить опцию Больше не выводить запрос о подключениях к этому компьютеру.
В этом случае отпечаток сертификата сохраняется в реестре клиента:
HKLM\SOFTWARE\Microsoft\Terminal Server Client\Servers (параметр CertHash).
Чтобы сбросить сохраненное доверие, удалите соответствующий ключ реестра с помощью команды:
Remove-Item -Path "HKLM:\SOFTWARE\Microsoft\Terminal Server Client\Servers\\CertHash"
Самоподписанные сертификаты обеспечивают шифрование, но не гарантируют доверие, что может быть неудобно для пользователей и нежелательно в корпоративной среде.
Проверка текущего RDP сертификата
Чтобы узнать, какой SSL/TLS сертификат используется для RDP:
1. Откройте PowerShell и выполните команду:
(Get-CimInstance -Class "Win32_TSGeneralSetting" -Namespace root\cimv2\terminalservices -Filter "TerminalName='RDP-tcp'").SSLCertificateSHA1Hash
Команда возвращает отпечаток (thumbprint) текущего сертификата.
2. Запустите консоль управления сертификатами: Управление сертификатами компьютера (certlm.msc).
3. Перейдите в Удаленный рабочий стол → Сертификаты (Remote Desktop → Certificates).
4. Откройте свойства сертификата, вкладка Подробно (Details), и сравните значение Отпечаток (Thumbprint) с полученным из PowerShell.
Ручная замена самоподписанного сертификата
Для замены самоподписанного сертификата на доверенный (например, от коммерческого CA или Let’s Encrypt):
1. Получите сертификат в формате PFX (с закрытым ключом).
– Пример: сертификат Let’s Encrypt, выпущенный для IIS через утилиту Win-ACME.
2. Импортируйте сертификат в хранилище Личное → Сертификаты (Personal → Certificates) через certlm.msc.
3. Скопируйте отпечаток сертификата из вкладки Подробно (Details).
4. Назначьте сертификат для RDP с помощью PowerShell:
$certHash = "bdbb88ce067de27743745ad7e7aa51ff13c2bcf8"
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp" -Name "SSLCertificateSHA1Hash" -Value $certHash
5. Перезапустите службу Удаленные рабочие столы (TermService):
Restart-Service -Name TermService -Force
6. Подключитесь к серверу через RDP, щелкните по значку замка в верхней части окна mstsc.exe и убедитесь, что используется доверенный сертификат.
Примечание: Сертификаты Let’s Encrypt имеют срок действия 90 дней и обычно автоматически перевыпускаются каждые 60 дней. Убедитесь, что автоматизация обновления настроена.
Создание шаблона сертификата в корпоративном CA
Если в вашей организации есть Microsoft Certificate Authority (CA), можно настроить автоматическую выдачу SSL/TLS сертификатов для RDP/RDS.
Создание шаблона сертификата
1. Откройте консоль Центр сертификации (certsrv.msc).
2. Перейдите в Шаблоны сертификатов (Certificate Templates).
3. Создайте копию шаблона Компьютер (Certificate Templates → Manage → Computer → Duplicate).
4. На вкладке Общие (General):
– Укажите имя шаблона: RDPTemplate.
– Убедитесь, что Template Name совпадает с Template Display Name.
5. На вкладке Совместимость (Compatibility):
– Установите минимальную версию CA (например, Windows Server 2016) и клиентов (например, Windows 10) для использования современных алгоритмов шифрования.
6. На вкладке Расширения (Extensions):
– В разделе Политики приложений (Application Policies) выберите только Remote Desktop Authentication (OID: 1.3.6.1.4.1.311.54.1.2).
– Удалите все другие политики.
7. На вкладке Безопасность (Security):
– Добавьте группу Контроллеры домена (Domain Controllers).
– Включите для нее разрешения Регистрация (Enroll) и Автоматическая регистрация (Autoenroll).
8. Сохраните шаблон.
9. В консоли Центр сертификации выберите Шаблоны сертификатов (Certificate Templates) → Создать → Выдать шаблон сертификата (New → Certificate Template to Issue) → выберите RDPTemplate.
Настройка GPO для автоматической выдачи RDP сертификатов
Для автоматического выпуска и привязки RDP сертификатов настройте групповую политику:
1. Убедитесь, что корневой сертификат CA добавлен в доверенные на всех клиентах через GPO.
2. Откройте консоль управления GPO (gpmc.msc).
3. Создайте новую политику и свяжите ее с OU, содержащей RDP/RDS серверы.
4. Перейдите в раздел:
Конфигурация компьютера → Политики → Административные шаблоны → Компоненты Windows → Службы удаленных рабочих столов → Узел сеансов удаленных рабочих столов → Безопасность
(Computer Configuration → Policies → Administrative Templates → Windows Components → Remote Desktop Services → Remote Desktop Session Host → Security).
5. Включите политику Шаблон сертификата для проверки подлинности сервера (Server Authentication Certificate Template):
– Укажите имя шаблона: RDPTemplate.
6. Включите политику Требовать использования указанного уровня безопасности для удаленных подключений (RDP) (Require use of specific security layer for remote (RDP) connections):
– Установите значение SSL.
7. Для автоматического продления сертификатов перейдите в:
Конфигурация компьютера → Параметры Windows → Параметры безопасности → Политики открытого ключа
(Computer Configuration → Windows Settings → Security Settings → Public Key Policies).
– Включите политику Клиент служб сертификации – свойства автоматической регистрации (Certificate Services Client – Auto-Enrollment Properties).
– Активируйте опции:
– Обновлять сертификаты с истекшим сроком действия, ожидающие сертификаты и удалять отозванные сертификаты.
– Обновлять сертификаты, использующие шаблоны сертификатов.
8. (Опционально) Включите политику Настройка проверки подлинности для клиента (Configure Authentication for Client) в разделе:
Конфигурация компьютера → Политики → Административные шаблоны → Компоненты Windows → Параметры удаленного рабочего стола → Клиент подключения к удаленному рабочему столу
(Computer Configuration → Policies → Administrative Templates → Windows Components → Remote Desktop Settings → Remote Desktop Connection Client).
– Установите значение Предупреждать, если проверка подлинности не удалась (Warn me if authentication fails).
9. (Опционально) Откройте порт TCP/UDP 3389 через GPO в разделе Параметры безопасности → Брандмауэр Windows (Security Settings → Windows Firewall).
Примените политики на клиенте:
gpupdate /force
Проверьте в certlm.msc, что в хранилище Личное → Сертификаты (Personal → Certificates) появился сертификат с назначением Remote Desktop Authentication, выданный вашим CA.
Если политики не применились, используйте утилиту gpresult для диагностики.
Проверка применения сертификата
1. Перезапустите службу Удаленные рабочие столы (TermService):
Get-Service TermService -ComputerName msk-dc01 | Restart-Service -Force -Verbose
2. Подключитесь к серверу через RDP.
3. Щелкните по значку замка в mstsc.exe, выберите Посмотреть сертификат (View Certificate) → вкладка Состав (Details) → проверьте поле Отпечаток (Thumbprint).
4. В консоли Центр сертификации откройте Выданные сертификаты (Issued Certificates) и убедитесь, что сертификат по шаблону RDPTemplate выдан для нужного сервера.
5. Проверьте отпечаток сертификата службы RDS в реестре:
HKLM:\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations (параметр TemplateCertificate)
Или используйте PowerShell:
Get-WmiObject -Class "Win32_TSGeneralSetting" -Namespace root\cimv2\terminalservices | Select-Object SSLCertificateSHA1Hash
Примечание: Если подключение выполняется по IP-адресу вместо FQDN, указанного в сертификате, может появиться предупреждение о доверии.
Подписывание RDP-файлов для клиентских устройств
Если корпоративный CA отсутствует, можно устранить предупреждения, добавив отпечаток сертификата сервера в доверенные на клиентах.
1. Получите отпечаток сертификата:
Get-WmiObject -Class "Win32_TSGeneralSetting" -Namespace root\cimv2\terminalservices | Select-Object SSLCertificateSHA1Hash
2. Подпишите .RDP файл с помощью утилиты RDPSign.exe:
rdpsign.exe /sha256 65A27B2987702281C1FAAC26D155D78DEB2B8EE2 "C:\Users\root\Desktop\rdp.rdp"
3. Настройте GPO для добавления отпечатка в доверенные:
– Перейдите в Конфигурация компьютера → Политики → Административные шаблоны → Компоненты Windows → Параметры удаленного рабочего стола → Клиент подключения к удаленному рабочему столу
(Computer Configuration → Policies → Administrative Templates → Windows Components → Remote Desktop Settings → Remote Desktop Connection Client).
– Включите политику Указать отпечатки SHA1 сертификатов, представляющих доверенных издателей RDP (Specify SHA1 thumbprints of certificates representing trusted .rdp publishers).
– Укажите отпечаток (или несколько, разделяя точкой с запятой).
Рекомендации
– Используйте корпоративный CA для автоматической выдачи и продления RDP сертификатов в доменной среде.
– Для Let’s Encrypt настройте автоматическое перевыпускание сертификатов каждые 60 дней.
– Проверяйте соответствие FQDN в сертификате и имени сервера при подключении.
– Регулярно обновляйте политики с помощью gpupdate /force и проверяйте сертификаты через certlm.msc.
– Для повышения безопасности откройте только порт TCP/UDP 3389 для доверенных сетей.
Эти шаги обеспечат безопасное RDP/RDS подключение без предупреждений, упрощая администрирование и улучшая пользовательский опыт.