
Многие компании используют инфраструктуру VDI для организации удаленной работы с неуправляемых компанией персональных станций. При публикации фермы VDI в интренет, внешние пользователи сталкиваются с проблемой недоверия к сертификату, который был выпущен корпоративным центром сертификации. В следствии этого, появляются предупреждения безопасности при установке удаленного подключения.

В данном случае, предупреждение появляется дважды: первый раз не доверенным является Connection Broker сервер, а второй – виртуальная машина фермы VDI.
Многие системные администраторы выходят из данной ситуации либо предлагая пользователям игнорировать данное сообщение установив галку «Больше не спрашивать», либо устанавливают корневой сертификат в доверенные на удаленном компьютере пользователя и публикуют CRL корпоративного CA. Однако данные методы не работают если пользователь подключается каждый раз из разных мест, либо подключается к разным виртуальным машинам.
Для решения поставленной проблемы необходимо использовать «белый» сертификат, выписанный доверенным Certificate Authority для фермы VDI. Имя данного внешнего сертификата и имена компьютеров VDI должны совпадать.
РЕШЕНИЕ ПРОБЛЕМЫ
Для начала нам понадобится wildcard сертификат вида *.yourcompany.com, приобретенный у доверенного центра сертификации.
Добавление нового DNS Суффикса в домене:
В DNS на контроллере домена добавляем новую Active Directory Integrated зону yourcompany.com, которая будет обслуживать внутренние запросы для новых имен серверов и виртуальных машин фермы VDI.
Для поддержания в домене дополнительного доменного суффикса необходимо внести изменения в атрибут msDS-AllowedDNSSuffixes на уровне домена. Необходимо добавить внутреннее и внешнее имена домена как значения атрибута, например, yourcompany.local и yourcompany.com. На уровне домена создаем новую групповую политику для указания DNS суффиксов, которые будут добавляться к коротким именам машин при DNS запросах.

Следующую политику необходимо включить и добавить через запятую значения внутреннего доменного имени и внешнего доменного имени: Computer Configuration \ Policies \ Administrative Templates \ Network \ DNS Client\ DNS suffix search list.

Установка сертификата на RD сервера
Перед созданием VDI фермы необходимо выполнить смену DNS суффикса планируемых RD серверов на имя внешнего домена. Для этого перейдем в свойства компьютера и выберем изменить имя компьютера. В окне изменения имени компьютера необходимо нажать на кнопку More… и задать новый первичный DNS суффикс компьютера — yourcompany.com.

Далее создаем новую ферму VDI, основываясь на выбранных серверах Microsoft Windows Server 2012 R2. Информацию по данной процедуре можно легко найти в сети.
После того, как pfx файл сертификата будет на руках, можно приступить к установке его на новую VDI ферму. На сервере RD Connection Broker переходим Server Manager -> Remote Desktop Services -> Overview. В поле Deployment Overview в выпадающем списке TASKS выбираем Edit Deployment Properties.

Открываем вкладку Certificates и устанавливаем необходимый сертификат *.yourcompany.com для всех сервисов фермы. Добавление производится по одному за действие. Выбираем существующий сертификат, указываем его путь на файловой системе и пароль.

После чего данные сертификаты будут установлены на серверах VDI, но не на виртуальных машинах. В реестре на Connection Broker сервере появится SSLCertificateSHA1Hash REG_BINARY параметр со значением thumbprint сертификата по следующему адресу:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp.
Данный параметр отвечает за выбор сертификата, который будет использоваться при установке RDP сессии. Это параметр необходимо будет установить и на клиентские машины.

Установка сертификата на виртуальные машины
Для использования белого сертификата на виртуальных машинах необходимо:
- Установить сертификат на все машины в персональное хранилище сертификатов компьютера.
- Установить права на чтение ключа сертификата для Network Service каждой машины.
- Иметь SSLCertificateSHA1Hash REG_BINARY параметр со значением thumbprint сертификата.
- Виртуальные имена машин должны совпадать с именем сертификата, т.е. иметь суффикс yourcompany.com
Создадим новую групповую политику на уровне Organizational Unit, выделенного для ��омпьютерных аккаунтов виртуальных машин фермы VDI.
Данная политика должна выполнить Startup Script ExportVDICert.bat на виртуальных машинах.

В указанном скрипте используются утилиты certutil и FindPrivateKey от Microsoft. Certutil является встроенной утилитой, FindPrivateKey предоставляется в качестве Samle tool для разработчиков и может быль скомпилирован самостоятельно. Скрипт необходимо расположить внутри политики.
Сертификат и утилиту FindPrivateKey необходимо разместить в сетевой папке, откуда скрипт будет забирать файлы для установки. Текст скрипта:
certutil -f -p "<certificate password>" -importpfx "<Path to pfx>" NoExport
c:
mkdir "c:\TempCertSecurity"
cd "c:\TempCertSecurity"
xcopy "<Path to FindPrivateKey.exe>" "c:\TempCertSecurity"
FindPrivateKey.exe My LocalMachine -t "<thumbprint of certificate>" -a > tmp.txt
set /p myvar= < tmp.txt
del tmp.txt
del FindPrivateKey.exe
cd \
rd "c:\TempCertSecurity"
cacls.exe %myvar% /E /G "NETWORK SERVICE":R"
При помощи данного скрипта после перезагрузки виртуальной машины будет установлен новый сертификат и для него будут настроены права.
Следующая часть политики касается установки параметра SSLCertificateSHA1Hash. Необходимый ключ настраивается через Preferences \ Windows Settings \ Registry

Для централизованного изменения Primary DNS суффикса виртуальных машин в политике необходимо включить Primary DNS suffix и установить его как внешнее доменное имя yourcompany.com.

После перезагрузки, машина получит новый FQDN, соответствующий белому сертификату. После проведения данных операций, пользователи больше не увидят надоедливые предупреждения безопасности.
