Как обновить сертификат на WAP и ADFS серверах

Обновлено 11.02.2022

Как обновить сертификат на WAP и ADFS серверах

Добрый день! Уважаемые читатели и гости одного из крупнейших IT блогов в рунете по системному администрированию Pyatilistnik.org. Ранее мы с вами рассмотрели подключение к удаленному рабочему столу различными методами, идем далее. В сегодняшней статье я хочу коснуться темы обновления сертификата безопасности на серверах WAP и ADFS. Инструкция больше для себя, так как это требуется делать каждый год.

Локальная установка сертификата в систему

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

Обязательно выбирайте расположение "Локального компьютера (Local machine)", далее укажите пароль, будет ли закрытый ключ экспортируемым и контейнер "Личное (Personal)".

Установка сертификата в формате pfx

Данный сертификат у вас должен появиться в оснастке "Сертификаты компьютера". Как я и писал выше, если у вас не pfx формат, то тут вы можете его импортировать.

Импорт сертификата

Теперь нужно посмотреть от имени кого у вас запускается служба "Active Directory Federation Services". Посмотреть можно так же в оснастке "Службы".

Active Directory Federation Services

Данную учетную запись нужно добавить в ACL установленного сертификата. Для этого кликните по нему правым кликом и выберите "Управление закрытыми ключами (Manage Private Keys)".

Управление закрытыми ключами (Manage Private Keys)

Если вы используете для запуска Active Directory Federation Services аккаунт "gMSA — Group Managed Service Accounts", то не забудьте включить галочку "Службы (Service Accounts)".

добавление прав на сертификат

На WAP серверах, которые с высокой степени вероятности не входят в домен Active Directory, ваша служба adfssrv запускается наверное от "Network Service". Выставляем права минимум на чтение.

Права на чтение сертификата

это тот минимум, который нам позволит далее использовать данный сертификат в командах

Еще сразу советую для команд PowerShell подготовить отпечаток нового сертификата (Thumbprint). Я показывал как это сделать, по сути это некий хэш.

Thumbprint сертификата

Импорт и замена SSL-сертификата на сервере AD FS

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

Оснастка Active Directory Federation Services

А вот актуальный вывод из PowerShell.

Вывод текущего используемого сертификата, портов и его отпечатка

Get-AdfsSslCertificate

Далее выведем все сертификаты хранящиеся локально в компьютере и найдем среди них нужный отпечаток

Get-ChildItem -path cert:\LocalMachine\My | FT Subject, Thumbprint, NotBefore, NotAfter

Обратите внимание, что отпечаток текущего сертификата заканчивается на F836, что соответствует сертификату который действует до 27 января 2022, а не 05.05.2022 года. Новый сертификат заканчивается наCA61 и валиден до 2023 года. Так, что лучше всегда смотрите информацию в PowerShell.

Просмотр текущего сертификата adfs

Далее, чтобы заменить на сервере ADFS сертификат нам нужен полученный ранее Thumbprint, в оснастке PowerShell в режиме администратора введите.

Set-AdfsSslCertificate –Thumbprint код отпечатка

Set-AdfsSslCertificate –Thumbprint 000000000000000000000000000CA61

У меня по какой-то причине выскочила ошибка:

Set-AdfsSslCertificate : The socket connection was aborted. This could be caused by an error processing your message or a receive timeout being exceeded by the remote host, or an underlying network resource issue. Local socket timeout was '00:01:00'.

The socket connection was aborted

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

После этого нужно перезапустить службу adfssrv, можно через PowerShell или через оснастку.

Перезапуск adfssrv

Да задать сертификат как я и писал выше можно и через оснастку AD FS Management (Microsoft.IdentityServer.msc). Откройте в левой иерархии папок "Service - Certificates", далее в действиях выберите пункт "Set-Service Communications Certificate". У вас всплывет список ваших доступных сертификатов, выберите нужный, после чего нажмите применить. Далее не забываем так же перезагрузить службу AD FS.

Добавление сертификата в AD FS Management

Далее, вы должны удостовериться, что у вас в логах Windows нет ошибок и присутствуют события, о корректном запуске службы adfssrv. Нас будет интересовать журнал "Система".  Последовательность событий должна быть такая:

  • Предупреждение ID 15300 - SSL Certificate Settings deleted for endpoint : localhost:443. - Тут вам говорят, что был удален SSL сертификат с адреса localhost и порт 443.

ID 15300 -SSL Certificate Settings deleted for endpoint

  • Предупреждение ID 15301 - SSL Certificate Settings created by an admin process for endpoint : localhost:443 - Тут мы успешно добавили новый сертификат. И так далее, лишь будут меняться адреса и порты.

SSL Certificate Settings created by an admin process for endpoint

  • Далее должно быть событие ID 7036 - The Active Directory Federation Services service entered the running state. - Тут сообщат, что служба AD FS перешла в рабочее состояние.

Успешный запуск Active Directory Federation Services

Еще интересный момент, как только вы установили новый SSL сертификат, то в его ACL прописалась учетная запись службы adfssrv.

Пользователь adfssrv в ACL сертификата

Повторяем все те же действия на втором сервере AD DS, если у вас их два конечно как у меня. Лично у меня уже все заработало, так как у меня вместо WAP используется обратный прокси FortiWeb, но я ниже покажу, что вы должны сделать на WAP серверах, если у вас классическая схема.

Установка нового сертификата на WAP-сервер

Выше вы должны были установить сертификат в локальное хранилище компьютера, выяснить его отпечаток. Теперь остается просто выполнить ряд простых команд. Откройте PowerShell и выполните команду для смены сертификата

Set-WebApplicationProxySslCertificate – Thumbprint 000000000000000000000000000CA61

Все успешно выполнено

Импорт нового сертификата на WAP-сервер

Недостаточно задокументированный шаг, необходимо для завершения всей процедуры. Проверяя сертификат приложения WAP, ExternalCertificateThumbprint по-прежнему указывает на старый Thumbprint. Обратите также внимание на значение в поле ID .

Get-WebApplicationProxyApplication | fl

ExternalCertificateThumbprint

Зная из предыдущих шагов правильный отпечаток сертификата нам его нужно прописать еще в одно место, выполните команду:

Set-WebApplicationProxyApplication –ExternalCertificateThumbprint 000000000000000000000000000CA61

Если потом проверить конфигурацию, то видно, что все поменялось. Еще вас могут спросить код ID. Все теперь внешний сертификат WAP теперь сообщает правильный отпечаток.

Set-WebApplicationProxySslCertificate

не забываем перезапустить службу WAP через команду:

Restart-Service adfssrv

Повторяем все те же действия  на втором WAP сервере если они у вас в паре. Либо можно сохранить в файл настройки публикации приложений и восстанавливаем на другом узле:

Get-WebApplicationProxyApplication | Export-Clixml "WAPApps"
Import-Clixml "WAPApps" | Add-WebApplicationProxy

Полезные командлеты для WAP сервера

  • Get-WebApplicationProxyConfiguration — информация о конфигурации WAP;
  • Get-WebApplicationProxyHealth — статус работы;
  • Get-WebApplicationProxyApplication — показывает настройки публикации приложений;
  • Get-WebApplicationProxyAvailableADFSRelyingParty -список WAP доступных на AD FS;
  • Get-WebApplicationProxySslCertificate — информация о привязке SSL сертификата.

Восстановите доверие между WAP и AD FS

Чтобы восстановить доверие между AD FS и WAP, на сервере WAP выполните следующую команду:

Install-WebApplicationProxy -CertificateThumbprint 000000000000000000000000000CA61 -FederationServiceName имя домена

Когда процесс завершится, система отобразит сообщение DeploymentSucceded. В области расшифровки токена дата истечения срока действия сертификата теперь отображается как действительная. Доверие между WAP и AD FS восстановлено, что подтверждено в средстве просмотра событий в событии ID 245.

Траблшутинг автологина в браузере

Суть проблемы, что в сторонних браузера, например в Google Chrome у вас не будет отрабатывать автоматический вход. Для ее решения необходимо разрешить NTLM авторизацию в AD FS для определенного User-Agent.

  1. Нужно выключить Extended Protection TokenCheck - Set-ADFSProperties –ExtendedProtectionTokenCheck None
  2. Проверить список поддерживаемых User-Agent - Get-ADFSProperties | Select -ExpandProperty WIASupportedUserAgents
  3. Ну и добавить недостающего - Set-ADFSProperties -WIASupportedUserAgents @( "MSIE 10.0" .... "Mozilla/5.0"

Полезные ссылки

  • https://nolabnoparty.com/en/adfs-3-0-replace-ssl-certificate/

На этом у меня все, с вами был Иван Сёмин, автор и создатель IT портала Pyatilistnik.org.

Автор - Сёмин Иван

One Response to Как обновить сертификат на WAP и ADFS серверах

  1. Григорий:

    Спасибо за статью, все подробно и доходчиво, не первый раз помогают ваши публикации)

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *