Перейти к основному содержимому
Версия: Indeed Access Manager 9.7

Настройка сертификата для HTTPS-подключения

Модули, реализованные через компонент SrvLocator2, используют клиентский сертификат для HTTPS/TLS-подключения к Core Server:

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

  • eaclient — встроенный сертификат, подписанный по алгоритму SHA-1 (используется в Indeed AM начиная с версии 8.x).
  • eaclient2 — встроенный сертификат, подписанный по алгоритму SHA-256 (рекомендуется как более безопасный, используется по умолчанию начиная с Indeed AM 9.x).

Вместо встроенного клиентского сертификата можно использовать внешний клиентский сертификат, размещенный в хранилище сертификатов Windows на рабочей станции пользователя.

Добавление внешнего клиентского сертификата​

  1. Выпустите сертификат с закрытым ключом любым доступным способом.

    Требования:

    • У сертификата есть закрытый ключ.

    • В сертификате нет ограничений на использование в качестве клиентского сертификата для 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-файл — например, в оснастке Сертификаты — и импортируйте на каждой из них.

  1. Импортируйте сертификат в хранилище сертификатов Windows на рабочей станции пользователя: Локальный компьютер → Личное.

    Примечание

    Если сертификат не самоподписанный, а выпущен центром сертификации, импортируйте в одно хранилище всю цепочку центров сертификации.

    При импорте из .pfx-файла это происходит автоматически.

    Если разместить цепочку и сертификат в разных хранилищах, при работе через WinHTTP могут возникнуть проблемы.

  2. Предоставьте право на чтение закрытого ключа сертификата учетной записи, от имени которой компонент SrvLocator2 обращается к сертификату. Учетная запись зависит от сценария работы модуля:

    СценарийУчетная записьПрава на закрытый ключ
    Вход в систему и разблокировка рабочей станции в Windows LogonLocalSystemОбычно дополнительная настройка не требуется
    Работа процесса authproxy в RDP Windows Logon, IIS Extension и NPS RADIUS ExtensionLocalSystemОбычно дополнительная настройка не требуется
    Сценарии credential UI в Windows Logon (например, Запуск от имени)Пользователь, который выполняет действиеТребуется выдать права, если пользователь не является администратором
    Enterprise SSOПользователь, в сессии которого работает агентТребуется выдать права, если пользователь не является администратором

    Если прав недостаточно, выдайте их вручную конкретному пользователю или группе, в которую он входит (например, доменным пользователям):

    1. Откройте оснастку Сертификаты (локальный компьютер).
    2. Перейдите в Личное → Сертификаты и найдите внешний сертификат.
    3. В контекстном меню выберите Все задачи → Управление закрытыми ключами.
    4. Добавьте пользователя или группу и разрешите Чтение.

Настройка клиентского сертификата​

При настройке через политики значения будут указаны по пути реестра: HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Indeed-ID\SrvLocator2 и будут приоритетнее ручной настройки.

Примечание

Если политика выключена или не задана, используется встроенный сертификат по умолчанию.

Как добавить административные шаблоны (ADMX)

Файлы шаблонов политик входят в состав дистрибутива Indeed AM и расположены в папке Misc\ADMX Templates.

  1. Скопируйте файлы шаблонов групповых политик из C:\Indeed\Indeed AM <номер версии>\Misc\ADMX Templates в одну из следующих папок:

    • C:\Windows\PolicyDefinitions — локальное хранилище ADMX-файлов.
    • C:\Windows\SYSVOL\sysvol\indeed.local\Policies\PolicyDefinitions — хранилище ADMX-файлов на контроллере домена.

    Если папка PolicyDefinitions отсутствует, создайте ее.

  2. Скопируйте файл IndeedID.BaseFile.admx и все необходимые ADMX-файлы в папку \PolicyDefinitions.

  3. Скопируйте файл IndeedID.BaseFile.adml и все ADML-файлы, аналогичные скопированным ADMX-файлам, из папки \Indeed AM <номер версии>\Misc\GroupPolicyTemplates\<en-US или ru-RU> в одну из следующих папок:

    • \PolicyDefinitions\en-US — для англоязычной локализации сервера
    • \PolicyDefinitions\ru-RU — для русскоязычной локализации сервера
  4. Скопируйте шаблоны из папки ADMX Templates\BSPs в корневую папку PolicyDefinitions рядом с остальными ADMX-файлами.

  5. Добавьте шаблоны политик и провайдеров аутентификации в раздел Конфигурация компьютера (Computer Configuration).

  6. Добавьте шаблоны политик Indeed AM Paste в раздел Конфигурация пользователя (User Configuration).

После загрузки групповые политики Indeed ID станут доступны в редакторе групповой политики. Политики можно настроить локально в Редакторе локальной групповой политики (gpedit.msc) или для домена в Редакторе управления групповыми политиками, который открывается из Консоли управления групповыми политиками (gpmc.msc).

  1. Добавьте политику IndeedID.CertLocation.admx на рабочее место с установленным модулем Indeed AM.

  2. Через gpedit.msc пройдите по пути Конфигурация компьютера → Административные шаблоны → Indeed ID → Client Connection → Клиентский сертификат для https-подключения к серверу Indeed AM.

    Включите политику.

  3. В поле Сертификат для использования укажите одно из значений:

    • <пусто> — используется встроенный сертификат по умолчанию: 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
  4. Нажмите Применить.

Важно

Если внешний сертификат отсутствует или недоступен, подключение к Core Server не выполняется. Автоматический возврат к встроенному сертификату (eaclient/eaclient2) не предусмотрен.