Терминальная ферма. Настройка сертификата. Подключение к ферме. Часть 3.

Remote Desktop Services

Для успешного подключения к ферме, нам необходимо установить 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 BrokerPublishing
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.

С Уважением, Андрей.

Mihalevskiy.com
Добавить комментарий

  1. Денис

    Scripts\ImportRDSFull.ps1
    А как выглядит скрипт?

    Ответить
    1. mihalevskiy автор

      Здравствуйте. Он присутствует с компонентами wacs. Скачайте: https://www.win-acme.com/ и перейдите в папку Scripts.

      Ответить