| WEB-приложение Сведение отчетности- Аутентификация клиентскими SSL сертификатами и 2-х факторная аутентификация (раздел целиком) (22.10.2026) | (одним файлом) |
Аутентификация клиентскими SSL сертификатами и 2-х факторная аутентификация | ||||||||||||
Если вы планируете разрешить удаленным пользователям аутентифицироваться с помощью клиентских SSL сертификатов, либо разрешить 2-х факторную аутентификацию с использованием SSL сертификатов пользователей, то установите соответствующие флажки.
Публично доступный URL текущего сервиса, включая порт, если он нестандартный:Укажите URL, по которому пользователи будут входить на сайт (так называемая "точка входа" для пользователя), обычно это сам домен сервиса. На этом URL у пользователя не будет запрашиваться его SSL сертификат, он будет работать на порту, который указан на странице Параметры сетевых настроек - Настройки протокола HTTPS, обычно это порт умолчанию 443.
Порт дополнительного прослушивателя, для запроса сертификата пользователя: Укажите порт, на который будут автоматически перенаправляться пользователи для прохождения аутентификации по SSL сертификату (в случае аутентификации по SSL сертификату, сразу после того как пользователь инициирует авторизацию, а в случае 2-х факторной аутентификации, после того как пользователь пройдет аутентификацию по логин/паролю). Сертификаты доверенных центров сертификации: Укажите путь к файлу в PEM-формате, содержащий публичные сертификаты доверенных центров сертификации, которые будут использоваться для проверки клиентских сертификатов. Клиентские сертификаты могут быть выпущены как напрямую указанным доверенным центром(ами), так и его дочерними центрами, при условии, что вся цепочка сертификатов корректно строится (ведёт к одной из точек доверия) и успешно валидируется. Сервер будет считать доверенными только те сертификаты, которые явно указаны в этом файле как точки доверия (trust anchors). По умолчанию, точками доверия являются все корневые сертификаты любого центра сертификации, включенные в этот файл. Промежуточные сертификаты, включенные в этот файл, не считаются автоматически доверенными (они будут использоваться только для построения цепочки, т.е. просто как известные серверу сертификаты), если только администратор явно не настроил их как точки доверия. В случае необходимости доверять нескольким центрам сертификации, их сертификаты можно сохранить в один файл, в котором расположить их друг за другом, т.е. обычной конкатенацией и с новой строки.
Список отозванных сертификатов: При необходимости, укажите путь к файлу в PEM-формате, содержащий отозванные сертификаты (признаваемые недействительными раньше срока своего окончания).
Глубина проверки в цепочке сертификатов: Укажите глубину проверки в цепочке сертификатов. Глубина проверки устанавливает лимит на количество сертификатов между конечным сертификатом пользователя и доверенным центром, находящимся в файле доверенных центров сертификации. Если длина всей цепочки сертификатов, после вычета 2-х (сам клиентский сертификат и корневой сертификат - не участвуют в подсчете), длиннее указанной глубины, то пользовательский сертификат будет признан недействительным.
Использовать другой сертификат вместо указанного в настройках HTTPS: Если данная опция выключена, то на Порту дополнительного прослушивателя, для запроса сертификата пользователя будут использоваться те же настройки, что указаны на странице Параметры сетевых настроек - Настройки протокола HTTPS. Эта опция дает возможность гибко разделить использование сертификата для основного прослушивателя (функционирование сервиса по HTTPS протоколу) и использование сертификата для проверки клиентских SSL сертификатов (в дополнительном прослушивателе). В частности, при необходимости проверять сертификаты пользователей с ГОСТ алгоритмами, логично было бы настроить: Таким образом, такое разделение позволит снять необходимость использования специального браузера для тех пользователей, которым не требуется авторизовываться клиентскими ГОСТ сертификатами. Для этого, включите текущий параметр и укажите данные ГОСТ сертификата для дополнительного прослушивателя. По смыслу, функциональность параметров (Сертификат домена, Закрытый ключ, Пароль закрытого ключа, Сертификат центра сертификации, Удалять корневой сертификат из цепочки, отправляемой клиенту, Набор шифров для TLS 1.2 и ранее, Набор шифров для TLS 1.3+) полностью соответсвует описанию на странице Параметры сетевых настроек - Настройки протокола HTTPS.
|
1. Принцип проверки клиентских сертификатов (mTLS) |
Аутентификация клиентскими SSL сертификатами, включая 2-х факторную аутентификацию использующую SSL сертификаты, основана на mTLS (mutual TLS) -проверка сервером клиентских сертификатов, в процессе SSL рукопожатия (handshake), сразу после установки TCP соединения. Проверка клиентских сертификатов выполняется с использованием OpenSSL. Все правила, описанные в документации OpenSSL для проверки сертификатов (https://docs.openssl.org/master/man1/openssl-verification-options/), применимы и к данному ПП. Хранилище доверенных сертификатов(trust store) Для проверки клиентских сертификатов используется хранилище доверенных сертификатов (в документации OpenSSL - trust store). В это хранилище сертификаты попадают только из файла, указанного при конфигурации в поле "Сертификаты доверенных центров сертификации". Файл может содержать один или несколько сертификатов, порядок их расположения в файле не важен. Таким образом, при работе серверной части, хранилище сертификатов операционной системы (Windows или Linux) не участвует: все необходимые сертификаты загружаются только из указанных файлов при конфигурации. Точки доверия (trust anchors) Все сертификаты, попавшие в хранилище доверенных сертификатов, автоматически разделяются на две категории:
По умолчанию, точками доверия становятся все корневые сертификаты центров сертификации, т.е. самоподписанные, а не выпущенные кем-то - они физически и являются конечными корневыми сертификатами. Администратор может принудительно назначить любой промежуточный сертификат в качестве точки доверия (trust anchor), т.е. вручную перевести сертификат из категории Остальные сертификаты в Точки доверия. В этом случае, построение цепочки клиентского сертификата будет останавливаться на этом промежуточном сертификате, считая его корневым, даже если до настоящего корня, выше выбранного, могут быть ещё сертификаты (в том числе неизвестные серверу или просроченные). Как сделать промежуточный сертификат точкой доверия Чтобы вручную пометить сертификат как точку доверия, перед его добавлением в PEM‑файл, необходимо выполнить команду OpenSSL: openssl x509 -in c:\cert.pem -addtrust clientAuth -out c:\trusted.pem где: После успешного выполнения команды содержимое выходного файла можно добавить в итоговый PEM-файл, который будет указан при конфигурации в поле "Сертификаты доверенных центров сертификации". Если требуется сделать точками доверия несколько сертификатов, то нужно повторить процедуру для каждого из них. Работа сервиса Построение цепочки клиентского сертификата При установке соединения, в котором клиент должен представиться серверу (mTLS), а сервер проверить предоставленный клиентский сертификат - клиент обязан прислать всю цепочку сертификатов за исключением корневого. т.е. он отправит свой клиентский сертификат + все промежуточные сертификаты. При работе через браузеры, это гарантировано - браузеры, при mTLS всегда так действуют и это нельзя выключить. Сервер получив от клиента сертификат (чисто теоретически клиент может прислать неполную цепочку), пытается построить полную цепочку на своей стороне - для этого он идет снизу (от самого клиентского сертификата) в вверх (к корневому сертификату). Во всех сертификатах указано кем он выпущен и идентификатор родительского сертификата. Также в сертификат включена подпись этого сертификата (контролирующая целостность и неизменность его данных), сделанная выпускаемой стороной. По валидности этой подписи, любой может вычислить, были ли данные сертификата изменены, и был ли он действительно выпущен этим родителем. Таким образом, сервер проверив целостность текущего сертификата, и взяв идентификатор родительского, он начинает искать его либо в цепочке сертификатов присланной клиентом, либо в собственном хранилище доверенных сертификатов. Проверка построенной цепочки После успешного построения цепочки сервер выполняет её валидацию, для этого каждый сертификат проверяется:
Отдельно контролируется длина цепочки, не превышает ли она значение указанное в конфигураторе, в поле "Глубина проверки в цепочке сертификатов". В OpenSSL умолчание для глубины = 100, но в ПП умолчание сейчас = 1. В подсчете длины цепочки не участвует сам сертификат клиента (можно сказать, что он номер 0) и корневой сертификат построенной цепочки, т.е. считаются только промежуточные сертификаты. |