Настройка сертификата для HTTPS-подключения
Модули, реализованные через компонент SrvLocator2, используют клиентский сертификат для HTTPS/TLS-подключения к Core Server:
- Enterprise SSO
- IIS Extension
- NPS RADIUS Extension
- RDP Windows Logon
- Windows Logon
- Утилита управления аутентификаторами
Для подключения модулей вы можете использовать один из встроенных сертификатов:
eaclient— встроенный сертификат, подписанный по алгоритму SHA-1 (используется в Indeed AM начиная с версии 8.x).eaclient2— встроенный сертификат, подписанный по алгоритму SHA-256 (рекомендуется как более безопасный, используется по умолчанию начиная с Indeed AM 9.x).
Вместо встроенного клиентского сертификата можно использовать внешний клиентский сертификат, размещенный в хранилище сертификатов Windows на рабочей станции пользователя.
Добавление внешнего клиентского сертификата
Выпустите сертификат с закрытым ключом любым доступным способом.
Требования:
У сертификата есть закрытый ключ.
В сертификате нет ограничений на использование в качестве клиентского сертификата для HTTPS-подключения.
В поле Использование ключа (Key Usage) указаны значения Цифровая подпись (Digital Signature) и Шифрование ключей (Key Encipherment).
В поле Расширенное использование ключа (EKU) указано значение Проверка подлинности клиента (Client Authentication,
1.3.6.1.5.5.7.3.2). Если поле EKU в сертификате отсутствует, ограничений на применение сертификата нет.Сертификат поддерживается службой WinHTTP и поставщиком безопасности Schannel, так как
SrvLocator2устанавливает HTTPS-соединения через них.Рекомендуется, чтобы сертификат соответствовал уровню безопасности OpenSSL
SECLEVEL=2.ПримечаниеУровень безопасности
SECLEVEL=2используется по умолчанию в HAProxy 3.2 и выше (РЕД ОС 8). Эта версия HAProxy применяется как балансировщик нагрузки для Core Server в Access Manager.Уровню
SECLEVEL=2не соответствуют устаревшие алгоритмы, например SHA-1 и MD5. Сертификат с подписью SHA-256 и ключом длиной 2048 бит соответствует. Для выпуска такого сертификата используйте пример ниже.Если сертификат не соответствует уровню
SECLEVEL=2, HAProxy отклоняет соединение при проверке клиентского сертификата. В этом случае в конфигурации HAProxy потребуется явно включить уровеньSECLEVEL=0и разрешить ослабленные алгоритмы, которые по умолчанию не используются. Это может привести к снижению безопасности, поэтому способ не рекомендуется.
Пример
Чтобы выпустить самоподписанный сертификат
CustomEaClientс алгоритмом ключа RSA, алгоритмом подписи SHA-256 и сроком действия 2 года, запустите PowerShell от имени администратора и выполните команду:New-SelfSignedCertificate -Type Custom -Subject "CN=CustomEaClient" -FriendlyName "CustomEaClient" -TextExtension @("2.5.29.37={text}1.3.6.1.5.5.7.3.2") -NotAfter (Get-Date).AddYears(2) -CertStoreLocation cert:\LocalMachine\My -Provider "Microsoft RSA SChannel Cryptographic Provider" -KeySpec 1 -HashAlgorithm "SHA256" -KeyLength 2048 -KeyAlgorithm "RSA"Команда сохраняет сертификат в хранилище Локальный компьютер → Личное на той рабочей станции, где была выполнена. Чтобы использовать сертификат на других рабочих станциях, экспортируйте его с закрытым ключом в
.pfx-файл — например, в оснастке Сертификаты — и импортируйте на каждой из них.
Импортируйте сертификат в хранилище сертификатов Windows на рабочей станции пользователя: Локальный компьютер → Личное.
ПримечаниеЕсли сертификат не самоподписанный, а выпущен центром сертификации, импортируйте в одно хранилище всю цепочку центров сертификации.
При импорте из
.pfx-файла это происходит автоматически.Если разместить цепочку и сертификат в разных хранилищах, при работе через WinHTTP могут возникнуть проблемы.
Предоставьте право на чтение закрытого ключа сертификата учетной записи, от имени которой компонент
SrvLocator2обращается к сертификату. Учетная запись зависит от сценария работы модуля:Сценарий Учетная запись Права на закрытый ключ Вход в систему и разблокировка рабочей станции в Windows Logon LocalSystemОбычно дополнительная настройка не требуется Работа процесса authproxy в RDP Windows Logon, IIS Extension и NPS RADIUS Extension LocalSystemОбычно дополнительная настройка не требуется Сценарии credential UI в Windows Logon (например, Запуск от имени) Пользователь, который выполняет действие Требуется выдать права, если пользователь не является администратором Enterprise SSO Пользователь, в сессии которого работает агент Требуется выдать права, если пользователь не является администратором Если прав недостаточно, выдайте их вручную конкретному пользователю или группе, в которую он входит (например, доменным пользователям):
- Откройте оснастку Сертификаты (локальный компьютер).
- Перейдите в Личное → Сертификаты и найдите внешний сертификат.
- В контекстном меню выберите Все задачи → Управление закрытыми ключами.
- Добавьте пользователя или группу и разрешите Чтение.
Настройка клиентского сертификата
При настройке через политики значения будут указаны по пути реестра: HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Indeed-ID\SrvLocator2 и будут приоритетнее ручной настройки.
Если политика выключена или не задана, используется встроенный сертификат по умолчанию.
- Групповые политики
- Реестр Windows
Как добавить административные шаблоны (ADMX)
Файлы шаблонов политик входят в состав дистрибутива Indeed AM и расположены в папке Misc\ADMX Templates.
Скопируйте файлы шаблонов групповых политик из
C:\Indeed\Indeed AM <номер версии>\Misc\ADMX Templatesв одну из следующих папок:C:\Windows\PolicyDefinitions— локальное хранилище ADMX-файлов.C:\Windows\SYSVOL\sysvol\indeed.local\Policies\PolicyDefinitions— хранилище ADMX-файлов на контроллере домена.
Если папка PolicyDefinitions отсутствует, создайте ее.
Скопируйте файл
IndeedID.BaseFile.admxи все необходимые ADMX-файлы в папку\PolicyDefinitions.Скопируйте файл
IndeedID.BaseFile.admlи все ADML-файлы, аналогичные скопированным ADMX-файлам, из папки\Indeed AM <номер версии>\Misc\GroupPolicyTemplates\<en-US или ru-RU>в одну из следующих папок:\PolicyDefinitions\en-US— для англоязычной локализации сервера\PolicyDefinitions\ru-RU— для русскоязычной локализации сервера
Скопируйте шаблоны из папки
ADMX Templates\BSPsв корневую папку PolicyDefinitions рядом с остальными ADMX-файлами.Добавьте шаблоны политик и провайдеров аутентификации в раздел Конфигурация компьютера (Computer Configuration).
Добавьте шаблоны политик Indeed AM Paste в раздел Конфигурация пользователя (User Configuration).
После загрузки групповые политики Indeed ID станут доступны в редакторе групповой политики. Политики можно настроить локально в Редакторе локальной групповой политики (gpedit.msc) или для домена в Редакторе управления групповыми политиками, который открывается из Консоли управления групповыми политиками (gpmc.msc).
Добавьте политику
IndeedID.CertLocation.admxна рабочее место с установленным модулем Indeed AM.Через gpedit.msc пройдите по пути Конфигурация компьютера → Административные шаблоны → Indeed ID → Client Connection → Клиентский сертификат для https-подключения к серверу Indeed AM.
Включите политику.
В поле Сертификат для использования укажите одно из значений:
<пусто>— используется встроенный сертификат по умолчанию:eaclient2для Indeed AM 9.x,eaclientдля Indeed AM 8.x.1илиeaclient— встроенный сертификат, подписанный по алгоритму SHA-1 (используется в Indeed AM начиная с версии 8.x).2илиeaclient2— встроенный сертификат, подписанный по алгоритму SHA-256 (рекомендуется как более безопасный, используется по умолчанию начиная с Indeed AM 9.x).строка в формате
<CertLocation>— указывает на внешний сертификат из хранилища сертификатов Windows.Формат значения
CertLocation:<CertLocation>=<StoreType>\<StoreName>\<CertParams>где:
<StoreType>— хранилище сертификатов. Допустимые значения:LocalMachine,LocalMachineGroupPolicy,CurrentUser,CurrentUserGroupPolicy.<StoreName>— раздел хранилища, в котором находится сертификат, напримерMy(Личное) илиRoot(Доверенные корневые центры сертификации).<CertParams>— параметры поиска сертификата. Задаются одним из двух способов: по отпечатку либо по субъекту/издателю.Поиск по отпечатку сертификата
Укажите в качестве
<CertParams>SHA-1-отпечаток сертификата:ПримерLocalMachine\My\01de449b6f4b49e00d1a5b20ffb5d6605cf6cd2aЧтобы включить подробное логирование поиска и свойств сертификата, добавьте перед отпечатком флаг
inspect&:ПримерLocalMachine\My\inspect&01de449b6f4b49e00d1a5b20ffb5d6605cf6cd2aПоиск по имени субъекта или издателя сертификата
([<certFlags>](issuer=<Name>|subject=<Name>|issuerStr=<Str>|subjectStr=<Str>))где:
issuer=<Name>/subject=<Name>— задает поиск по точному совпадению полного имени издателя / субъекта сертификата.issuerStr=<Str>/subjectStr=<Str>— задает поиск по подстроке в имени издателя / субъекта сертификата.<certFlags>— необязательные флаги, которые уточняют выбор сертификата. Чтобы использовать несколько флагов, добавьте после каждого символ&.Назначения флагов:
notExpired— исключает сертификаты с истекшим сроком действия.valid— выбирает сертификат, действительный на текущий момент: текущая дата находится между датами начала и окончания действия (NotBeforeиNotAfter).clientAuth— выбирает сертификат, в расширенном использовании ключа (EKU) которого есть значение Client Authentication.pkey— выбирает сертификат с закрытым ключом. Права на чтение ключа для выбранной учетной записи необходимо настроить отдельно.latest— среди сертификатов, подходящих по остальным критериям, выбирает сертификат с самой поздней датой начала действия (NotBefore). Без этого флага используется первый найденный подходящий сертификат.utf8— выполняет поиск по субъекту/издателю в кодировке UTF-8 (помогает найти сертификат, если стандартный поиск не срабатывает из-за кодировки имени).inspect— включает подробное логирование поиска и свойств сертификата.Пример поиска по подстроке издателя с несколькими флагамиLocalMachine\My\valid&clientAuth&issuerStr=Indeed CA
Нажмите Применить.
Перейдите на рабочую станцию с установленным модулем Indeed AM.
Откройте редактор реестра.
Перейдите в раздел Компьютер\HKEY_LOCAL_MACHINE\SOFTWARE\Indeed-ID\SrvLocator2.
Создайте параметр
REG_SZс именемClientCertи укажите одно из значений:<пусто>— используется встроенный сертификат по умолчанию:eaclient2для Indeed AM 9.x,eaclientдля AM 8.x.1илиeaclient— встроенный сертификат, подписанный по алгоритму SHA-1 (используется в Indeed AM начиная с версии 8.x).2илиeaclient2— встроенный сертификат, подписанный по алгоритму SHA-256 (рекомендуется как более безопасный, используется по умолчанию начиная с Indeed AM 9.x).- строка в формате
<CertLocation>— указывает на внешний сертификат из хранилища сертификатов Windows.
ПримечаниеЕсли политика выключена или не задана, используется встроенный сертификат по умолчанию.
Формат значения
CertLocation:<CertLocation>=<StoreType>\<StoreName>\<CertParams>где:
<StoreType>— хранилище сертификатов. Допустимые значения:LocalMachine,LocalMachineGroupPolicy,CurrentUser,CurrentUserGroupPolicy.<StoreName>— раздел хранилища, в котором находится сертификат, напримерMy(Личное) илиRoot(Доверенные корневые центры сертификации).<CertParams>— параметры поиска сертификата. Задаются одним из двух способов: по отпечатку либо по субъекту/издателю.Поиск по отпечатку сертификата
Укажите в качестве
<CertParams>SHA-1-отпечаток сертификата:ПримерLocalMachine\My\01de449b6f4b49e00d1a5b20ffb5d6605cf6cd2aЧтобы включить подробное логирование поиска и свойств сертификата, добавьте перед отпечатком флаг
inspect&:ПримерLocalMachine\My\inspect&01de449b6f4b49e00d1a5b20ffb5d6605cf6cd2aПоиск по имени субъекта или издателя сертификата
([<certFlags>](issuer=<Name>|subject=<Name>|issuerStr=<Str>|subjectStr=<Str>))где:
issuer=<Name>/subject=<Name>— задает поиск по точному совпадению полного имени издателя / субъекта сертификата.issuerStr=<Str>/subjectStr=<Str>— задает поиск по подстроке в имени издателя / субъекта сертификата.<certFlags>— необязательные флаги, которые уточняют выбор сертификата. Чтобы использовать несколько флагов, добавьте после каждого символ&.Назначения флагов:
notExpired— исключает сертификаты с истекшим сроком действия.valid— выбирает сертификат, действительный на текущий момент: текущая дата находится между датами начала и окончания действия (NotBeforeиNotAfter).clientAuth— выбирает сертификат, в расширенном использовании ключа (EKU) которого есть значение Client Authentication.pkey— выбирает сертификат с закрытым ключом. Права на чтение ключа для выбранной учетной записи необходимо настроить отдельно.latest— среди сертификатов, подходящих по остальным критериям, выбирает сертификат с самой поздней датой начала действия (NotBefore). Без этого флага используется первый найденный подходящий сертификат.utf8— выполняет поиск по субъекту/издателю в кодировке UTF-8 (помогает найти сертификат, если стандартный поиск не срабатывает из-за кодировки имени).inspect— включает подробное логирование поиска и свойств сертификата.Пример поиска по подстроке издателя с несколькими флагамиLocalMachine\My\valid&clientAuth&issuerStr=Indeed CA
Нажмите ОК.
Если внешний сертификат отсутствует или недоступен, подключение к Core Server не выполняется. Автоматический возврат к встроенному сертификату (eaclient/eaclient2) не предусмотрен.