惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
W
WeLiveSecurity
O
OpenAI News
N
News and Events Feed by Topic
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
Webroot Blog
Webroot Blog
Google Online Security Blog
Google Online Security Blog
云风的 BLOG
云风的 BLOG
N
News | PayPal Newsroom
H
Hacker News: Front Page
博客园_首页
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
The Last Watchdog
The Last Watchdog
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
H
Heimdal Security Blog
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
S
Schneier on Security
宝玉的分享
宝玉的分享
H
Hackread – Cybersecurity News, Data Breaches, AI and More
Recent Commits to openclaw:main
Recent Commits to openclaw:main
Y
Y Combinator Blog
Cyberwarzone
Cyberwarzone
Microsoft Security Blog
Microsoft Security Blog
C
CXSECURITY Database RSS Feed - CXSecurity.com
GbyAI
GbyAI
Cloudbric
Cloudbric
TaoSecurity Blog
TaoSecurity Blog
人人都是产品经理
人人都是产品经理
P
Palo Alto Networks Blog
M
MIT News - Artificial intelligence
G
GRAHAM CLULEY
C
Check Point Blog
Apple Machine Learning Research
Apple Machine Learning Research
Last Week in AI
Last Week in AI
T
Troy Hunt's Blog
L
Lohrmann on Cybersecurity
www.infosecurity-magazine.com
www.infosecurity-magazine.com
P
Proofpoint News Feed
Blog — PlanetScale
Blog — PlanetScale
量子位
博客园 - 聂微东
S
Securelist
博客园 - 三生石上(FineUI控件)
F
Full Disclosure
G
Google Developers Blog
L
LINUX DO - 热门话题
P
Proofpoint News Feed
AI
AI
PCI Perspectives
PCI Perspectives

Все публикации подряд на Хабре

Ловим музу за клавиатуру: как айтишнику стать автором Что умеет Midjourney в 2026? Мой немного грустный разбор этого шикарного инструмента Никто не любит писать тесты, но ИИ может исправить это IPv8 выглядит как мечта. Поэтому почти наверняка не взлетит Производители вернули в продажу материнки с DDR3. Что происходит? Управление агентом с телефона через Telegram теперь в KodaCode От координации к лидерству: как меняется роль руководителя разработки Я сделала родителям бизнес вместо пенсии: зарабатываем 70 тысяч, мама не даёт продать В три раза быстрее приемка товара и оптимизация трудозатрат на 73%: как «РСТ-Инвент» помог Gulliver Group ИИ-шечный мир победил? О влиянии искусственного интеллекта на игропром Кремль снижает давление на Телеграмм пока Европа строит интернет по паспорту Как CEO, CTO и CIO за 8 часов собрали ИИ-директора, который умеет держать позицию под давлением Как (не) потерять домен за выходные Вместо 8 разных VPS: как я организовал практику студентам на одном сервере Почему твой Open Source проект не замечают? R&D: искусство управления неопределенностью в разработке AI-дефляция: вакансий для разработчиков больше, а рост зарплат — худший за 15 лет Мы отдали управление роботами OpenClaw. Что из этого вышло Галактический ID: система идентификации для всех форм разумной жизни Шесть основ бизнес-анализа: начинаем с вопроса «Кто в игре?» Код-ревью, в котором дело не в коде Данные переехали. Команда — нет Системной подход к сдаче OSWE в 2025 Почему комната управления реактором покрашена в цвет морской пены 4 YAML-файла вместо PySpark: как аналитикам строить пайплайны без разработчиков LLM-агент для поиска свободных доменов: автоматизируем подбор Когда, зачем и как правильно начинать новую сессию в Claude Code? Как я заставил нейросеть писать макросы для FreeCAD Анатомия ИИ‑агента для подбора персонала. От тысячи резюме к топ‑10 за минуты Опыт разработчика как экономика внимания Автономность как точка невозврата: кто будет субъектом в цифровом будущем Обучение ИИ в «диких» условиях: как рутинные действия превращаются в датасеты Как измерить LLM для задач кибербеза: обзор открытых бенчмарков Где хранить код? Сравнение GitHub, GitLab и Bitbucket Математика объясняет, почему нормальное распределение встречается повсюду Почему ваш FinOps не работает: 12 тезисов от практиков Как подписать проектную документацию УКЭП с использованием бесплатных лицензий Pilot Адаптивное администрирование Sigla Vision Я грузил уран в бочки, а потом 20 лет строил ИТ в атомной отрасли Чем позвонить с Эвереста? История и обзор спутниковой связи. Часть 2 Как языковая модель помогает контролировать качество инструктажей по охране труда в металлургии Как не передать на desktop свой IP в РКН Анатомия SAP Privileges: как устроено управление правами в macOS MoneyDev: Сказка про три главных слова Обновлённый токенизатор видео K-VAE 2.0 от Сбера Как сделать диспетчеризацию дома на 1284 квартиры почти бесплатно Как мы разогнали железную дорогу Мы дали агентам рутину. Теперь надо решить — что делать с освободившимся временем Токсичный контент, промпт-хакинг и защита ИИ — всё о Guardrails для LLM Умный город начинается с точного взгляда: как «Фалькон Тех» меняет пространство к лучшему Навайбкодил приложение для анализа графов Почему Дюну так интересно читать? Упрощаем работу с рутиной или как стать Гендальфом Белым Деконструкция Go: CPU, RAM и что там происходит. Go Assembler база. Часть 1.1 Какие профессии исчезнут из-за ИИ, а какие появятся? И что с этим делать Как мы построили IT-отдел, где хочется расти: архитектурные встречи, прозрачные метрики и книжные подарки Rufler: Делаем из Claude Code автономный рой через один YAML-конфиг Sing-box и белый список приложений Как построить надёжный обмен сообщениями в микросервисах: лучшие практики для enterprise OpenAI строит MLM-пирамиду, а McKinsey и Accenture помогают ей в этом Дом, который не построил Фишер (Часть 2) «Сверхзвуковой математик» против «Вдумчивого логиста»: битва алгоритмов 3D-упаковки Мультимодальные модели – грубый и дорогой инструмент Разговоры ничего не стоят. Код тоже Проверки физических лиц: с кого начнет ФНС Топ-10 бесплатных нейросетей для создания видео в 2026 году Первые слои кода: как наши решения сегодня определяют архитектуру ИИ на десятилетия Разработка нового статического анализатора: PVS-Studio JavaScript Поиск уязвимостей ПО: базовый минимум или роскошный максимум Почему оценка персонала не работает как инструмент управления Как мы разработали ИИ-ассистента и сократили рутину продуктовой команды на 50% Как я ушел из найма, нажарил косточек и продал на маркетплейсах на 168 млн в год Когда 1С:ERP уже внедрена, а нормального производственного плана всё ещё нет Как я сделал Claude мультимодальным, подключив к нему Qwen Omni Как приглашение на вакансию мечты превращается в атаку Infrastructure as Code: философия и лучшие практики IaC Тестируем Yandex Code Assistant на задаче, в которой нужно хранить секреты nxs-universal-chart v3.0: новое поколение универсального Helm-чарта Callback Injection: Техника, которая отправила Microsoft Defender в глухой нокаут «Все идеи на стол»: митап как способ вывести проект из тупика Сегодня я узнал нечто новое о GPU благодаря багу в своей игре Как заставить LLM ̶ ̶г̶а̶л̶л̶ю̶ ̶ эволюционировать Карта событий как фундамент аналитики: практический кейс для E-commerce Что выбрать для AI: x86, ARM или RISC-V? Дайджест железа за март Роль соматических мутаций в развитии аутоиммунных заболеваний: путь к избирательной терапии Mythos от Anthropic — тревожный сигнал для всех, а не только для банков Guardrails для LLM на Java: как приручить промпт‑инъекции и токсичные ответы Green-VLA: как мы собрали VLA-модель для реального антропоморфного робота и не потеряли обобщение Финансовая гонка вооружений: почему умные люди добровольно в ней участвуют Эра ИИ-агентов наступила: выбираем лучшего цифрового сотрудника # Практический опыт внедрения WinCC Redundancy на производственном предприятии Сделал MVP за 3 дня, а потом неделю прикручивал оплату. Оно того стоило? Физика против Маска: почему Starship V3 может оказаться ещё одной катастрофой Нефть Венесуэлы: крупнейшие запасы в мире, но не крупнейшая нефтяная держава JPA 4. Переосмысление Hibernate Почему зеркальная фотокамера Nikon D5 десятилетней давности идеально подошла для миссии «Артемида-2» Проект «Уровень-Спутник» или как мы сделали платформу для гидрологов «Замедлиться, чтобы ускориться»: почему ИИ повышает цену ошибок в требованиях и архитектуре Как с нуля поднять трафик IT-компании на 1657% при бюджете 55 тыс. и выжить Pixel-perfect Downsampling — идеальная отрисовка 50 миллионов точек без потерь
Вход по УКЭП в корпоративных системах: практическая архитектура
dlsale · 2026-04-27 · via Все публикации подряд на Хабре

Вход по УКЭП в корпоративных системах: практическая архитектура

Уровень сложностиСредний

Время на прочтение8 мин

Охват и читатели521

Кейс

Почти в каждой крупной корпоративной или государственной системе рано или поздно возникает задача — авторизация с использованием усиленной квалифицированной электронной подписи (УКЭП)

На первый взгляд это выглядит как «добавить проверку сертификата при входе». Но в реальности задача быстро превращается в архитектурную: приходится решать целый комплекс вопросов — от проверки сертификатов до поддержки разных устройств. 

И каждый из них добавляет определенный набор требований:

  • где и как проверять сертификаты;

  • как организовать доверие к удостоверяющим центрам;

  • как встроить УКЭП в веб-приложения;

  • как обеспечить масштабирование и эксплуатацию;

  • как работать с разными типами клиентов и устройств.

В этой статье разберем практическую архитектуру входа по УКЭП, которую можно внедрить в существующую инфраструктуру без изменения кода основных приложений — достаточно добавить специализированный шлюз и настроить компоненты проверки сертификатов.

Контекст и исходная проблема

В современных информационных системах пароль в качестве единственного фактора аутентификации постепенно утрачивает свою актуальность. Причин тому несколько:

  • парольные механизмы плохо масштабируются в условиях корпоративной инфраструктуры;

  • их сложно надежно защитить от компрометации;

  • использование только паролей затрудняет соблюдение требований регуляторов и отраслевых стандартов безопасности.

При этом во многих организациях уже существует готовая технологическая основа — инфраструктура с квалифицированными сертификатами усиленной квалифицированной электронной подписи (УКЭП) и удостоверяющих центров (УЦ).

Применение УКЭП в сценариях аутентификации обеспечивает сразу три ключевых свойства:

  • идентификацию пользователя;

  • аутентификацию;

  • юридическую значимость совершаемых действий.

Таким образом, сертификат УКЭП выступает не просто как дополнительный фактор защиты, а как полноценный фундамент для построения доверенной авторизации.

Чего на самом деле ждут от входа по УКЭП

Практическая реализация входа по УКЭП — это не просто проверка наличия сертификата. В реальной системе обычно требуется:

  • поддержка ГОСТ-криптографии;

  • проверка цепочки доверия;

  • проверка статуса сертификата (через CRL — списки отозванных сертификатов, OCSP — протокол онлайн-проверки);

  • проверка квалифицированности сертификата;

  • интеграция с веб-приложениями;

  • масштабируемость;

  • возможность контейнерного развертывания;

  • работа в сертифицированных ОС (например, Astra Linux).

Какие подходы вообще есть

1. TLS-аутентификация (mTLS)

Наиболее очевидный вариант — использование клиентских сертификатов на уровне TLS. Данный механизм обеспечивает:

  • защищенный канал передачи данных;

  • подтверждение факта наличия сертификата у клиента.

Однако здесь присутствует существенное ограничение. В рамках mTLS не учитываются:

  • квалифицированность сертификата;

  • юридическая значимость электронной подписи;

  • бизнес-логика приложения.

mTLS — надежный базовый механизм транспортной безопасности, но не полноценное решение для юридически значимой аутентификации на прикладном уровне.

2. Связка с Identity (OIDC / SSO)

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

  • OIDC (OpenID Connect);

  • SSO (Single Sign-On);

  • сессионные механизмы.

Такой подход позволяет не внедрять криптографию непосредственно в каждое приложение, а вынести логику проверки сертификатов на уровень Identity-провайдера.

3. Серверная проверка УКЭП

Ключевая идея, существенно упрощающая интеграцию: вынести всю проверку сертификатов в отдельный сервис.

Такой сервис занимается:

  • проверкой квалифицированности сертификата;

  • управлением доверием к удостоверяющим центрам;

  • обработкой CRL / OCSP;

  • работой с TSL-списками - доверенными перечнями удостоверяющих центров и выпущенных ими сертификатов, которые используются для проверки квалифицированности в соответствии с требованиями законодательства.

Самое важное — приложения остаются полностью изолированы от низкоуровневой логики работы с сертификатами. Вся проверка сосредоточена в сервисе, а для прикладных систем результат приходит в виде уже подтвержденного решения: «пользователь аутентифицирован, сертификат квалифицированный, юридическая значимость сохранена».

Как выглядит архитектура в целом

Если собрать все вместе, получается довольно понятная цепочка:

Клиент → TLS (ГОСТ / обычный)

       → шлюз (Gate)

      → сервис проверки сертификатов

       → identity (OIDC)

       → прикладные системы

Часто встречается требование обслуживать на одной точке входа клиентов с поддержкой ГОСТ-алгоритмов и без нее. Для этого на шлюзе настраивают двойной TLS на одном порту:

  • RSA-сертификат — для установления защищенного канала (работает с любым клиентом);

  • ГОСТ-сертификат — для аутентификации пользователя. 

RSA используется только на этапе TLS-хендшейка. Сама аутентификация выполняется по ГОСТ-сертификату. Такой подход закрывает оба типа клиентов без расширения точек входа.

Роль шлюза (Gate)

Шлюз выполняет первичную проверку сертификата и служит точкой входа для всех клиентских соединений.

Основные функции:

  • работа в режиме HTTPS-прокси;

  • завершение TLS-соединений (включая mTLS);

  • проксирование запросов в backend;

  • извлечение данных сертификата из TLS-сессии.

Типовой сценарий:

  1. Клиент подключается к шлюзу и предъявляет сертификат.

  2. Устанавливается защищенное соединение.

  3. Запускается OIDC-процесс.

  4. Данные сертификата передаются в прикладные системы.

Шлюз преобразует низкоуровневые данные сертификата из TLS-сессии в HTTP-заголовки для последующей обработки вышестоящими системами.

На практике в роли такого шлюза часто выступает Apache HTTP Server с модулем mod_ssl mod_ssl из состава  КриптоПро CSP. Эта конфигурация совместима с ГОСТ-алгоритмами и проверена в промышленной эксплуатации.

Сервис проверки сертификатов

После шлюза задействуется отдельный компонент — сервис проверки сертификатов.

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

  • проверяет цепочку сертификатов до корневого сертификата доверенного УЦ;

  • проверяет статус сертификата (OCSP, CRL);

  • определяет, является ли сертификат квалифицированным.

За счет централизации правила проверки (список доверенных УЦ, настройки OCSP/CRL) задаются один раз и применяются ко всем клиентам. Разработчикам прикладных систем не нужно реализовывать PKI-логику — достаточно вызывать этот сервис.

Такое решение избавляет от дублирования логики в каждом приложении и дает единую точку контроля для аудита и мониторинга.

Identity-слой

Следующий уровень — управление идентификацией (identity).

Здесь происходит:

  • связывание сертификата с пользователем;

  • управление сессиями;

  • выдача OIDC-токенов.

Прикладные системы получают результат аутентификации — подтвержденный идентификатор пользователя в OIDC-токене. Вся криптографическая часть остается на уровнях шлюза и сервиса проверки сертификатов.

Клиентская сторона: где возникает больше всего сложностей

На практике именно клиентская часть становится источником большинства проблем при внедрении.

Есть два основных подхода.

Вариант 1: браузеры с поддержкой ГОСТ-алгоритмов

Плюс:

  • нативная работа с TLS — браузер сам устанавливает защищенное соединение без дополнительных прослоек.

Минусы:

  • сложная установка — требуется установка криптопровайдера и браузерного плагина на каждой рабочей станции (например, КриптоПро CSP + Browser Plugin);

  • проблемы с поддержкой — обновление браузера может нарушить работу плагина; пользователь часто не может самостоятельно определить причину неисправности.

Вариант 2: отдельный клиент

Альтернатива — использовать отдельное приложение, которое:

  • работает как ГОСТ TLS-клиент;

  • управляет сертификатами;

  • само устанавливает защищенное соединение.

Плюсы для эксплуатации:

  • независимость от браузеров — не нужно тестировать под каждый;

  • поддержка мобильных устройств;

  • предсказуемое поведение — версия клиента фиксирована, среда контролируема.

По опыту внедрений, этот вариант чаще оказывается стабильнее.

Переход к практике: реализация на базе решений КриптоАРМ

Если идти не через кастомную разработку, а опираться на готовые компоненты, такую архитектуру можно собрать достаточно быстро на базе решений КриптоАРМ — в них уже заложено разделение на нужные слои.

В упрощенном виде схема выглядит так:

Клиент → TLS / ГОСТ TLS

КриптоАРМ Gate

КриптоАРМ Server

КриптоАРМ ID (OIDC)

→ прикладные системы

Общая схема аутентификации по УКЭП

Общая схема аутентификации по УКЭП

КриптоАРМ Gate

Точка входа и HTTPS-шлюз:

  • завершает TLS (включая mTLS);

  • принимает сертификат пользователя;

  • извлекает его данные;

  • проксирует запросы в backend.

Пример конфигурации Apache:

<VirtualHost *:443>
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined


    SSLEngine on
    SSLHonorCipherOrder on
    SSLCertificateFile /certs/gost/server.cer
    SSLCertificateFile /certs/rsa/server.cer
    SSLVerifyClient require


    RequestHeader unset X-SSL-Client-Verify
    RequestHeader unset X-SSL-Client-DN
    RequestHeader unset X-SSL-Client-Serial
    RequestHeader unset X-SSL-Client-Issuer
    RequestHeader unset X-SSL-Client-Cert

    RequestHeader set X-SSL-Client-Verify "%{SSL_CLIENT_VERIFY}e"
    RequestHeader set X-SSL-Client-DN "%{SSL_CLIENT_S_DN}s"
    RequestHeader set X-SSL-Client-Serial "%{SSL_CLIENT_M_SERIAL}e"
    RequestHeader set X-SSL-Client-Issuer "%{SSL_CLIENT_I_DN}s"
    RequestHeader set X-SSL-Client-Cert "%{SSL_CLIENT_CERT}s"

    ProxyPreserveHost On

    ProxyPass /api http://backend/
    ProxyPassReverse /api http://backend/
</VirtualHost>

На практике используется схема двойного TLS (ГОСТ + RSA), чтобы одновременно поддержать и ГОСТ-клиентов, и обычные браузеры.

КриптоАРМ Server

Отвечает за централизованную проверку сертификатов:

  • проверка квалифицированности;

  • проверка доверия к УЦ;

  • работа с CRL и OCSP;

  • использование TSL-списков Минцифры.

Он позволяет вынести всю криптографическую и регуляторную логику из прикладных систем.

Проверка квалифицированности сертификата

Проверка квалифицированности сертификата

Связка с OIDC-mTLS

КриптоАРМ OIDC-mTLS — это дополнительный модуль, который обеспечивает интеграцию проверки сертификатов с OIDC-потоком аутентификации.

В этой схеме:

  • OIDC-mTLS принимает сертификат в рамках аутентификации и управляет OIDC-потоком

  • КриптоАРМ Server используется как сервис проверки сертификата

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

API модуля КриптоАРМ OIDC-mTLS

API модуля КриптоАРМ OIDC-mTLS

КриптоАРМ ID

Реализует слой identity:

  • связывает сертификат с пользователем;

  • управляет сессиями;

  • обеспечивает OIDC-аутентификацию;

  • интегрируется с корпоративными системами.

Виджет авторизации КриптоАРМ ID

Виджет авторизации КриптоАРМ ID

Клиентская часть

Приложения КриптоАРМ (десктопные и мобильные версии) используются в качестве ГОСТ TLS-клиента.

В этом сценарии КриптоАРМ:

  • работает с сертификатами пользователя;

  • обеспечивает их выбор и использование;

  • устанавливает защищенное соединение с Gate.

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

Что это дает:

  • независимость от браузеров;

  • поддержку мобильных устройств;

  • единый пользовательский сценарий;

  • централизованное управление сертификатами;

  • предсказуемость работы вне зависимости от окружения.

 Выбор сертификата в клиентском приложении КриптоАРМ

 Выбор сертификата в клиентском приложении КриптоАРМ

Пример контейнерного развертывания

services:
  cryptoarm-id-back:
    image: registry.digtlab.ru/cryptoarm/id/back

  cryptoarm-id-mtls:
    image: registry.digtlab.ru/cryptoarm/gate/oidc/mtls
    env_file:
      - ./OIDC/mtls/.env

Пример .env:

ROOT_PATH=/mtls/

OIDC_ISSUER=https://id.example.ru
OIDC_CLIENT_ID=e4fb09dbeba1498486c839b6cff289b9
OIDC_CLIENT_SECRET=f9a6b8b6fc3d4addb0359ed3a58b402c
OIDC_REDIRECT_URI=https://id.example.ru/api/interaction/code
MTLS_AUTHORIZATION_URL=https://id.example.ru:3443/mtlsAuthorization

REQUIRE_QUALIFIED_CERT=true

Заключение

Вход по УКЭП — это не отдельная функция и не один сервис. Это архитектура, в которой каждый компонент решает свою конкретную задачу:

  • транспорт (TLS);

  • шлюз (Gate);

  • сервис проверки сертификатов;

  • identity-слой (OIDC);

  • клиентская часть.

Выводы

Изложенная схема построена за счет нескольких ключевых принципов:

  • разделение ответственности между слоями;

  • вынесение криптографии и проверки сертификатов из приложений;

  • использование шлюза (Gate) как точки входа и центра интеграции;

  • применение OIDC для централизованной авторизации;

  • поддержка mTLS как базового механизма аутентификации;

  • централизованная проверка УКЭП через отдельный сервис;

  • поддержка разных типов клиентов (браузеры и нативное приложение) без привязки к одному сценарию.

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