# Настройка доверенных SSL/TLS сертификатов для защиты RDP подключений

В этой статье мы покажем, как использовать доверенные SSL/TLS сертификаты для защиты RDP подключений к компьютерам и серверам Windows в домене Active Directory. Эти сертфикаты мы будем использовать вместо самоподписанных RDP сертификатов (у пользователей появляется предупреждение о невозможности проверки подлинности при подключению к RDP хосту с таким сертификатом). В этом примере мы настроим специальный шаблон для выпуска RDP сертификатов в Certificate Authority и настроим групповую политику для автоматического выпуска и привязки SSL/TLS сертификата к службе Remote Desktop Services.

Содержание:

* [Предупреждение о самоподписанном сертификате RDP](https://winitpro.ru/index.php/2019/12/17/rdp-tls-ssl-sertfikat-v-windows/#h2_1)
* [Создаем шаблон RDP сертификата в центре сертификации (CA)](https://winitpro.ru/index.php/2019/12/17/rdp-tls-ssl-sertfikat-v-windows/#h2_2)
* [Настройка групповой политики для выдачи RDP сертификатов](https://winitpro.ru/index.php/2019/12/17/rdp-tls-ssl-sertfikat-v-windows/#h2_3)
* [Подписываем RDP файл и добавляем отпечаток доверенного RDP сертификата](https://winitpro.ru/index.php/2019/12/17/rdp-tls-ssl-sertfikat-v-windows/#h2_4)

### Предупреждение о самоподписанном сертификате RDP <a href="#h2_1" id="h2_1"></a>

По умолчанию в Windows для защиты RDP сессии генерируется [самоподписанный](https://winitpro.ru/index.php/2015/12/28/kak-sozdat-samopodpisannyj-sertifikat-v-windows/)

[сертификат](https://winitpro.ru/index.php/2015/12/28/kak-sozdat-samopodpisannyj-sertifikat-v-windows/). В результате при первом подключении к RDP/RDS серверу через клиента mstsc.exe, у пользователя появляется предупреждение:

```
Не удалось проверить подлинность удаленного компьютер из-за проблем с сертификатом безопасности.
Ошибка сертификата: сертификат выдан не имеющим доверия центром сертификации.
```

Чтобы продолжить установление RDP подключении пользователь должен нажать кнопку Да. Чтобы RDP предупреждение не появлялось каждый раз, можно включить опцию “Больше не выводить запрос о подключениях к этому компьютеру».\
![rdp подключение Ошибка сертификата: сертификат выдан не имеющим доверия центром сертификации](https://winitpro.ru/wp-content/uploads/2019/12/rdp-podklyuchenie-oshibka-sertifikata-sertifikat-vyd.png)

При этом отпечаток RDP сертификата сохраняется на клиенте в параметре **CertHash** в ветке реестра [с историей RDP подключений](https://winitpro.ru/index.php/2013/05/13/ochistka-istorii-rdp-soedinenij/) (HKEY\_CURRENT\_USER\Software\Microsoft\Terminal Server Client\Servers\\). Если вы скрыли уведомление о невозможности проверить подлинность RDP сервера, чтобы сбросить настройки, удалите ключ с отпечатком сертификата из реестра.

![отпечаток RDP сертфиката хранится на клиенте в реестре](https://winitpro.ru/wp-content/uploads/2019/12/otpechatok-rdp-sertfikata-hranitsya-na-kliente-v-ree.png)

Несмотря на то, что для подключения используется самоподписанный сертификат, ваше RDP подключение защищено, а трафик зашифрован.

### Создаем шаблон RDP сертификата в центре сертификации (CA) <a href="#h2_2" id="h2_2"></a>

Попробуем использовать для защиты RDP подключений доверенный SSL/TLS сертификат, выданный корпоративным центром сертификации. С помощью такого сертификата пользователь может выполнить проверку подлинности RDP сервера при подключении. Предположим, что у вас в домене уже развернут корпоративной центр сертификации (Microsoft Certificate Authority), в этом случае вы можете настроить автоматическую выдачу и подключение сертификатов всем компьютерам и серверам Windows в домене.

Н на вашем CA нужно создать новый тип шаблона сертификата для RDP/RDS серверов.

1. Запустите консоль Certificate Authority и перейдите в секцию Certificate Templates;
2. Сделайте копию шаблона сертификата Computer (Certificate Templates -> Manage -> Computer -> Duplicate);\
   ![Microsoft Certificate Authority создать новый шаблон сертфиката для компьютеров и серверов](https://winitpro.ru/wp-content/uploads/2019/12/microsoft-certificate-authority-sozdat-novyj-shabl.png)
3. На вкладке **General** укажите имя нового шаблона сертификата – **RDPTemplate**. Убедитесь, что значение поля **Template Name** полностью совпадает с **Template display name**;\
   ![RDPTemplate - новый шаблон сертфиката для RDP подключений](https://winitpro.ru/wp-content/uploads/2019/12/rdptemplate-novyj-shablon-sertfikata-dlya-rdp-podk.png)
4. На вкладке **Compatibility** укажите минимальную версию клиентов в вашем домене (например, Windows Server 2008 R2 для CA и Windows 7 для клиентов). Тем самым будут использоваться более стойкие алгоритмы шифрования;
5. Теперь на вкладке **Extensions** в политике приложений (Application policy) нужно ограничить область использования такого сертификата только для **Remote Desktop Authentication** (укажите следующий object identifier — **1.3.6.1.4.1.311.54.1.2**). Нажмите Add -> New, создайте новую политику и выберите ее;\
   ![политика сертфиката - для Remote Desktop Authentication](https://winitpro.ru/wp-content/uploads/2019/12/politika-sertfikata-dlya-remote-desktop-authentic.png)
6. В настройках шаблона сертификата (Application Policies Extension) удалите все политики кроме **Remote Desktop Authentication**;![шаблон сертификата Remote Desktop Authentication](https://winitpro.ru/wp-content/uploads/2019/12/shablon-sertifikata-remote-desktop-authentication.png)
7. Чтобы использовать данный шаблон RDP сертификатов на контролерах домена, откройте вкладку **Security**, добавьте группу **Domain Controllers** и включите для нее опцию **Enroll** и **Autoenroll**;\
   ![права для авто выпуска сертификатов rdp](https://winitpro.ru/wp-content/uploads/2019/12/prava-dlya-avto-vypuska-sertifikatov-rdp.png)
8. Сохраните шаблон сертификата;
9. Теперь в оснастке Certificate Authority, щёлкните по папке Certificate Templates, выберите **New ->** **Certificate Template to Issue ->** выберите созданный шаблон **RDPTemplate**.\
   ![новый шаблон сертфикатов в CA для rdp](https://winitpro.ru/wp-content/uploads/2019/12/novyj-shablon-sertfikatov-v-ca-dlya-rdp.png)

### Настройка групповой политики для выдачи RDP сертификатов <a href="#h2_3" id="h2_3"></a>

Теперь нужно настроить доменную политику, которая будет автоматически назначать RDP сертификат компьютерам/серверам согласно настроенного шаблона.

Предполагается, что все компьютеры домена доверяют корпоративному центру сертификации, т.е. [корневой сертификат через GPO](https://winitpro.ru/index.php/2015/11/02/ustanovka-sertifikata-na-kompyutery-domena-s-pomoshhyu-gruppovyx-politik/) добавлен в доверенные корневые центры сертификации.

1. Откройте консоль управления доменными групповыми политиками gpmc.msc, создайте новый объект GPO и назначьте его на OU с RDP/RDS серверами или компьютерами, для которых нужно автоматически выдавать TLS сертификаты для защиты RDP подключения;
2. Перейдите в раздел GPO: Computer Configuration -> Policies -> Administrative Templates -> Windows Components -> Remote Desktop Services -> Remote Desktop Session Host -> Securit&#x79;**.** Включите политику **Server Authentication Certificate Template**. Укажите имя шаблона CA, который вы создали ранее (**RDPTemplate**);\
   ![политика RDP сертификата Server Authentication Certificate Template](https://winitpro.ru/wp-content/uploads/2019/12/politika-rdp-sertifikata-server-authentication-ce.png)
3. Затем в этом же разделе GPO включите политику **Require use of specific security layer for remote (RDP) connections** и установите для нее значение **SSL;**![политика Require use of specific security layer for remote (RDP) connections](https://winitpro.ru/wp-content/uploads/2019/12/politika-require-use-of-specific-security-layer-fo.png)
4. Для автоматического продления RDP сертификата, перейдите в раздел GPO Computer configuration -> Windows settings -> Security Settings -> Public Key Policies и включите политику **Certificate Services Client – Auto-Enrollment Properties**. Выберите опции “Renew expired certificates, update pending certificates and remove revoked certificates” и “Update certificates that use certificate templates”;\
   ![политика автопродления сертфиката Certificate Services Client – Auto-Enrollment Properties](https://winitpro.ru/wp-content/uploads/2019/12/politika-avtoprodleniya-sertfikata-certificate-serv.png)
5. Если вы хотите, чтобы клиенты всегда проверяли сертификат RDP сервера, вам нужно настроить политику **Configure Authentication for Client = Warn me if authentication fails** (секция GPO Computer Configuration -> Policies -> Administrative Templates -> Windows Components -> Remote Desktop Settings -> Remote Desktop Connection Client);
6. Если нужно, можете через [политики файервола](https://winitpro.ru/index.php/2018/12/06/nastrojka-pravil-windows-firewall-gpo/) открыть входящий [RDP порт TCP/UDP 3389](https://winitpro.ru/index.php/2010/09/17/nomer-porta-rdp-v-windows/);
7. Осталось [обновить политики](https://winitpro.ru/index.php/2020/07/09/obnovlenie-gruppovyx-politik-windows/) на клиенте, запустить консоль сертификатов компьютера (Certlm.msc), и проверить, что в разделе Personal -> Certificates появился сертификат для Remote Desktop Authentication, выданный вашим CA.Если политики не применились, для диагностики GPO воспользуйтесь утилитой [gpresult](https://winitpro.ru/index.php/2014/08/15/gpresult-diagnostika-primeneniya-gruppovyx-politik/) и [этой](https://winitpro.ru/index.php/2019/03/18/primenenie-gpo-spravka-admina/) статьей.\
   ![TLS сертфикат для Remote Desktop Authentication](https://winitpro.ru/wp-content/uploads/2019/12/tls-sertfikat-dlya-remote-desktop-authentication.png)

Для применения нового RDP сертификата, перезапустите службу Remote Desktop Services:

[`Get-Service`](https://winitpro.ru/index.php/2019/09/05/upravlenie-sluzhbami-windows-powershell/) `TermService -ComputerName msk-dc01| Restart-Service –force –verbose`

Теперь при RDP подключении к серверу перестанет появляться запрос на доверие сертификату (чтобы появился запрос о доверии сертификату, подключитесь к серверу по IP адресу вместо FQDN имени сервера, для которого выпущен сертификат). Нажмите кнопку “Посмотреть сертификат”, перейдите на вкладку “Состав”, скопируйте значение поля “Отпечаток сертификата”.\
![проверка rdp подключения с новым сертфикатом](https://winitpro.ru/wp-content/uploads/2019/12/proverka-rdp-podklyucheniya-s-novym-sertfikatom.png)

Также можете в консоли Certification Authority в секции **Issued Certificates** проверить, что по шаблону RDPTemplate был выдан сертификат определённому Windows компьютеру/серверу. Также проверьте значение Thumbprint сертификата:

![Thumbprint у сертфиката](https://winitpro.ru/wp-content/uploads/2019/12/thumbprint-u-sertfikata.png)

Теперь сравните полученные данные с отпечатком сертификата, который используется службой Remote Desktop Service. Вы можете посмотреть значение отпечатка сертификата службы RDS в реестре (ветка **HKLM:\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations**, параметр **TemplateCertificate**) или командой PowerShell: `Get-WmiObject -Class "Win32_TSGeneralSetting" -Namespace root\cimv2\terminalservices|select SSLCertificateSHA1Hash`\
![получить отпечаток rdp сертификата](https://winitpro.ru/wp-content/uploads/2019/12/poluchit-otpechatok-rdp-sertifikata.png)

Теперь, при подключении к удаленном столу любого сервера или компьютера, на который действует эта политика, вы не увидите предупреждения о недоверенном RDP сертификате.

### Подписываем RDP файл и добавляем отпечаток доверенного RDP сертификата <a href="#h2_4" id="h2_4"></a>

Если у вас отсутствует CA, но вы хотите, чтобы при подключении к RDP/RDS серверу у пользователей не появлялось предупреждения, вы можете добавить сертификат в доверенные на компьютерах пользователей.

Как описано выше получите значение отпечатка (Thumbprint) RDP сертификата:

`Get-WmiObject -Class "Win32_TSGeneralSetting" -Namespace root\cimv2\terminalservices|select|select SSLCertificateSHA1Hash`

Используйте этот отпечаток для подписывания .RDP файла с помощью **RDPSign.exe:**

`rdpsign.exe /sha256 65A27B2987702281C1FAAC26D155D78DEB2B8EE2 "C:\Users\root\Desktop\rdp.rdp"`

Теперь через GPO добавим этот отпечаток сертификата в доверенные у пользователей. Укажите отпечатки (через точку с запятою) в политике **Specify SHA1 thumbprints of certificates representing trusted .rdp publishers** (Указать отпечатки SHA1 сертификатов, представляющих доверенных издателей RDP) в секции Computer Configuration -> Policies -> Administrative Templates -> Windows Components -> Remote Desktop Settings -> Remote Desktop Connection Client.

![политика Указать отпечатки SHA1 сертификатов, представляющих доверенных издателей RDP](https://winitpro.ru/wp-content/uploads/2019/12/politika-ukazat-otpechatki-sha1-sertifikatov-pred.png)

Чтобы работал прозрачных RDP вход без ввода пароля ([RDP Single Sign On](https://winitpro.ru/index.php/2015/06/19/prozrachnaya-avtorizaciya-na-rds-s-pomoshhyu-sso-single-sign-on/)), нужно настроить политику Allow delegation defaults credential и указать в ней имена RDP/RDS серверов (см. [статью](https://winitpro.ru/index.php/2014/07/18/razreshaem-soxranenie-parolya-dlya-rdp-podklyucheniya/)).
