Как обновить сертификат на WAP и ADFS серверах
Добрый день! Уважаемые читатели и гости одного из крупнейших IT блогов в рунете по системному администрированию Pyatilistnik.org. Ранее мы с вами рассмотрели подключение к удаленному рабочему столу различными методами, идем далее. В сегодняшней статье я хочу коснуться темы обновления сертификата безопасности на серверах WAP и ADFS. Инструкция больше для себя, так как это требуется делать каждый год.
Локальная установка сертификата в систему
Первое, что вы должны выполнить на своих ADFS и WAP серверах, это произвести установку сертификата с закрытым ключом. В большинстве случаев у вас наверняка будет для этих нужд pfx архив, но может быть и в другом виде. Для этого просто выполните действия в мастере установки.
Обязательно выбирайте расположение "Локального компьютера (Local machine)", далее укажите пароль, будет ли закрытый ключ экспортируемым и контейнер "Личное (Personal)".
Данный сертификат у вас должен появиться в оснастке "Сертификаты компьютера". Как я и писал выше, если у вас не pfx формат, то тут вы можете его импортировать.
Теперь нужно посмотреть от имени кого у вас запускается служба "Active Directory Federation Services". Посмотреть можно так же в оснастке "Службы".
Данную учетную запись нужно добавить в ACL установленного сертификата. Для этого кликните по нему правым кликом и выберите "Управление закрытыми ключами (Manage Private Keys)".
Если вы используете для запуска Active Directory Federation Services аккаунт "gMSA — Group Managed Service Accounts", то не забудьте включить галочку "Службы (Service Accounts)".
На WAP серверах, которые с высокой степени вероятности не входят в домен Active Directory, ваша служба adfssrv запускается наверное от "Network Service". Выставляем права минимум на чтение.
Еще сразу советую для команд PowerShell подготовить отпечаток нового сертификата (Thumbprint). Я показывал как это сделать, по сути это некий хэш.
Импорт и замена SSL-сертификата на сервере AD FS
Первое, что я советую сделать, это посмотреть какой текущий сертификат использует сервер ADFS и лeчше это сделать через PowerShell, так как в графической оснастке может быть недостоверная информация, вот пример информации из нее. Видите сертификат до 05.05.2022 года.
А вот актуальный вывод из PowerShell.
Get-AdfsSslCertificate
Далее выведем все сертификаты хранящиеся локально в компьютере и найдем среди них нужный отпечаток
Get-ChildItem -path cert:\LocalMachine\My | FT Subject, Thumbprint, NotBefore, NotAfter
Обратите внимание, что отпечаток текущего сертификата заканчивается на F836, что соответствует сертификату который действует до 27 января 2022, а не 05.05.2022 года. Новый сертификат заканчивается наCA61 и валиден до 2023 года. Так, что лучше всегда смотрите информацию в PowerShell.
Далее, чтобы заменить на сервере ADFS сертификат нам нужен полученный ранее Thumbprint, в оснастке PowerShell в режиме администратора введите.
Set-AdfsSslCertificate –Thumbprint 000000000000000000000000000CA61
У меня по какой-то причине выскочила ошибка:
Но если выполнить команду показывающую, какой сертификат сейчас активный, то там стоял нужный, поэтому все применилось корректно, не знаю из-за чего эта ошибка.
После этого нужно перезапустить службу adfssrv, можно через PowerShell или через оснастку.
Да задать сертификат как я и писал выше можно и через оснастку AD FS Management (Microsoft.IdentityServer.msc). Откройте в левой иерархии папок "Service - Certificates", далее в действиях выберите пункт "Set-Service Communications Certificate". У вас всплывет список ваших доступных сертификатов, выберите нужный, после чего нажмите применить. Далее не забываем так же перезагрузить службу AD FS.
Далее, вы должны удостовериться, что у вас в логах Windows нет ошибок и присутствуют события, о корректном запуске службы adfssrv. Нас будет интересовать журнал "Система". Последовательность событий должна быть такая:
- Предупреждение ID 15300 - SSL Certificate Settings deleted for endpoint : localhost:443. - Тут вам говорят, что был удален SSL сертификат с адреса localhost и порт 443.
- Предупреждение ID 15301 - SSL Certificate Settings created by an admin process for endpoint : localhost:443 - Тут мы успешно добавили новый сертификат. И так далее, лишь будут меняться адреса и порты.
- Далее должно быть событие ID 7036 - The Active Directory Federation Services service entered the running state. - Тут сообщат, что служба AD FS перешла в рабочее состояние.
Еще интересный момент, как только вы установили новый SSL сертификат, то в его ACL прописалась учетная запись службы adfssrv.
Повторяем все те же действия на втором сервере AD DS, если у вас их два конечно как у меня. Лично у меня уже все заработало, так как у меня вместо WAP используется обратный прокси FortiWeb, но я ниже покажу, что вы должны сделать на WAP серверах, если у вас классическая схема.
Установка нового сертификата на WAP-сервер
Выше вы должны были установить сертификат в локальное хранилище компьютера, выяснить его отпечаток. Теперь остается просто выполнить ряд простых команд. Откройте PowerShell и выполните команду для смены сертификата
Все успешно выполнено
Недостаточно задокументированный шаг, необходимо для завершения всей процедуры. Проверяя сертификат приложения WAP, ExternalCertificateThumbprint по-прежнему указывает на старый Thumbprint. Обратите также внимание на значение в поле ID .
Зная из предыдущих шагов правильный отпечаток сертификата нам его нужно прописать еще в одно место, выполните команду:
Если потом проверить конфигурацию, то видно, что все поменялось. Еще вас могут спросить код ID. Все теперь внешний сертификат WAP теперь сообщает правильный отпечаток.
не забываем перезапустить службу WAP через команду:
Повторяем все те же действия на втором WAP сервере если они у вас в паре. Либо можно сохранить в файл настройки публикации приложений и восстанавливаем на другом узле:
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 выполните следующую команду:
Когда процесс завершится, система отобразит сообщение DeploymentSucceded. В области расшифровки токена дата истечения срока действия сертификата теперь отображается как действительная. Доверие между WAP и AD FS восстановлено, что подтверждено в средстве просмотра событий в событии ID 245.
Траблшутинг автологина в браузере
Суть проблемы, что в сторонних браузера, например в Google Chrome у вас не будет отрабатывать автоматический вход. Для ее решения необходимо разрешить NTLM авторизацию в AD FS для определенного User-Agent.
- Нужно выключить Extended Protection TokenCheck - Set-ADFSProperties –ExtendedProtectionTokenCheck None
- Проверить список поддерживаемых User-Agent - Get-ADFSProperties | Select -ExpandProperty WIASupportedUserAgents
- Ну и добавить недостающего - Set-ADFSProperties -WIASupportedUserAgents @( "MSIE 10.0" .... "Mozilla/5.0"
Полезные ссылки
- https://nolabnoparty.com/en/adfs-3-0-replace-ssl-certificate/
На этом у меня все, с вами был Иван Сёмин, автор и создатель IT портала Pyatilistnik.org.
Спасибо за статью, все подробно и доходчиво, не первый раз помогают ваши публикации)