Для успешного подключения к ферме, нам необходимо установить SSL сертификат. В данный момент я не буду рассматривать самоподписанный, так как коммерческий стоит не так и дорого, чтоб не иметь возможности его приобрести, да и как правило в организации уже зачастую есть wildcard сертификат для других нужд. Так же совершенно спокойно можно использовать Let’s Encrypt сертификат с автоматическим перевыпуском и установкой на все необходимые сервисы, которым мы и воспользуемся.
Выпуск Let’s Encrypt сертификата.
Как Вы знаете, мы не можем включить в коммерческий сертификат внутреннее имя локального домена.
Мой внутренний домен: OilService.Local
Внешний: OilService.Group.
1. Для подключение к терминальной ферме я выберу более красивое имя: RDS.OilService.Group.
Так как у меня внутри домена нет этого имени, мы создаем новую зону просмотра и сделаем разрешение в IP адрес Брокера этого имени:
2. Создаем такое же имя на внешнем DNS Хостинге. В моем случае на nic.ru.
3. Скачиваем Wacs. https://www.win-acme.com/
Распаковываем и кладем допустим на диск C:\
Далее нам нужно на нашем роутере открыть 80 порт для Брокера, так как Let’s Encrypt проводит проверку вэб сервиса. Я на своем роутере Mikrotik пробрасываю на IP адрес Брокера 80 порт.
4. Выпускаем сам сертификат:
Сертификат в формате PFX сохранился в папке: C:\ProgramData\win-acme\acme-v02.api.letsencrypt.org\Certificates
А его пароль можем узнать из wacs. A: Manage renewals (1 total) -> D: Show details for the renewal
В лабораторной среде мне не нужно автоматически устанавливать сертификат на все сервисы и автоматизировать процесс перевыпуска, но в продуктивной среде я пользуюсь такой командой:
wacs.exe –source manual –host rds.oilservice.group,rdcb.oilservice.group –certificatestore My –installation iis,script –installationsiteid 1 –script “Scripts\ImportRDSFull.ps1” –scriptparameters “{CertThumbprint}”
Таким образом сертификат создается и привязывается автоматически ко всем сервисам RDS. В планировщике создается задача на перевыпуск. Можете спать спокойно.Чтобы этот сценарий работал, закрытый ключ сертификата должен быть помечен как экспортируемый. Набор
PrivateKeyExportable
вsettings.json
кtrue
.
Установка сертификата на сервисы.
1. Заходим в оснастку конфигурации коллекции.
2. Применяем наш сертификат для сервисов:
RD Connection Broker – Publishing
RD Web Access.
Enable Single Sign On – нас пока не интересует.
3. Поставим чекбокс: Allow the certificate to be added to the Trusted Root Certification Authorities certificate store on the destination computers – для возможности установки сертификата на другие компьютеры с данной ролью. Это было бы справедливо с участием второго брокера в режиме высокой доступности.
4. Как видно, всё прошло успешно.
Тестируем подключение.
1. Заходим на RdWeb. Видим, что проблем с сертификатом ни каких нет. Соединение защищено.
2. Давайте перед входом откроем скачанный RDP ярлык с RDWEB и посмотрим что там интересного:
- Есть full address, имя, на которое происходит соединение.
- loadbalanceinfo говорит, что при соединении, Брокер нас направит на член RDSH в коллекции RDS.
- signature – ярлык подписан SSL сертификатом, потому любой компьютер будет ему доверять и мы не получим лишние предупреждение о недоверенном издателе:
3. Пробуем произвести соединение:
Данное предупреждение by design. Функция безопасности.
Данное предупреждение в домене можно убрать с помощью групповой политики:
Указать отпечатки SHA1 сертификатов, представляющих доверенных издателей RDP
4. Как видно, Брокер нас перенаправил на RDS01.
Изменение адреса в Connection Bar.
Вам нравится имя вверху RDCB01.OILSERVICE.LOCAL? Мне нет. Не зря же я делал RDS.OilService.Group
Другое дело, когда группа высокой доступности и ты там обязан вписать имя соединения, выбрав какое-нибудь красивое, а если один Брокер ?
Исправить это дело можно с помощью PowerShell. Давайте выполним командлет:
Set-RDSessionCollectionConfiguration -CollectionName "RDS" -CustomRdpProperty "full address:s:rds.oilservice.group" -ConnectionBroker RDCB01.oilservice.local
Командлет выполнился успешно.
Теперь снова скачаем ярлык с RdWeb и попробуем зайти, посмотреть что изменилось:
Строка состояния поменяла название. Чего и хотелось.
В следующей статье мы займемся виртуальными профилями на базе FSLogix.
С Уважением, Андрей.
Scripts\ImportRDSFull.ps1
А как выглядит скрипт?
Здравствуйте. Он присутствует с компонентами wacs. Скачайте: https://www.win-acme.com/ и перейдите в папку Scripts.