Медленное подписание документов через CryptoPro на Linux

Описание возможной проблемы и способов решения

Описание проблемы

При подписании документов через Госключ или другие сервисы электронной подписи операция подписания занимает аномально долгое время (5–30 минут вместо нескольких секунд), что приводит к таймаутам и ошибкам.

Как проявляется

  • Пользователь нажимает кнопку «Подписать» в интерфейсе веб-приложения EmplDocs

  • Интерфейс «зависает» на длительное время без видимой активности

  • Запрос Sign к базе 1С выполняется 5–20 минут (до таймаута)

  • По истечении таймаута возвращается ошибка HTTP 504 Gateway Timeout

  • При этом на других серверах или в других базах подписание работает нормально (1–10 секунд)

Затронутые компоненты

  • Сервер 1С:Предприятие на Linux (Ubuntu, Astra Linux, RHEL/CentOS и др.)

  • CryptoPro CSP 5.0 и выше

  • Любые операции подписания через МенеджерКриптографии.Подписать() в 1С

  • Интеграции с Госключом, Контуром и другими провайдерами ЭЦП

Причина

Проблема возникает из-за неустановленной цепочки сертификатов на сервере.

В случае с отправкой документа в Госключ — цепочка для обезличенного сертификата организации.

При подписании CryptoPro выполняет проверку цепочки доверия сертификата:

Если промежуточные или корневые сертификаты не установлены локально, CryptoPro:

  1. Пытается загрузить недостающие сертификаты из интернета

  2. Проверяет списки отзыва сертификатов (CRL) через HTTP/LDAP

  3. Выполняет OCSP-запросы для проверки статуса сертификата

Каждая из этих операций может занимать минуты, особенно если:

  • Серверы УЦ недоступны или работают медленно (частая причина — интернет на сервере 1С по белым спискам)

  • Файрвол блокирует исходящие соединения

  • DNS-резолвинг работает некорректно

Специфика платформы

Linux vs Windows

На Windows проблема встречается реже, потому что:

  • Корневые сертификаты Минцифры часто уже установлены через Windows Update

  • Браузеры и другое ПО могли ранее установить нужные сертификаты

  • Механизм автоматического обновления корневых сертификатов работает «из коробки»

На Linux сертификаты необходимо устанавливать вручную, так как:

  • Нет централизованного механизма распространения российских корневых сертификатов

  • Серверы 1С обычно устанавливаются «с нуля» без лишних компонентов

  • Администраторы часто устанавливают только сертификат пользователя, забывая о цепочке

Версии CryptoPro

Проблема воспроизводится на всех версиях CryptoPro CSP 4.0, 5.0, 5.0 R2 и выше. Это не баг, а штатное поведение — криптопровайдер обязан проверять цепочку доверия согласно стандартам.

Диагностика

Шаг 1. Проверка подписания из командной строки

Выполните от имени пользователя сервера 1С:

bash

Признаки проблемы:

  • Появляется сообщение «Цепочка сертификатов не проверена»

  • Операция выполняется с задержкой в несколько минут

  • Запрашивается подтверждение на использование сертификата

Если проблемы нет:

  • Подписание завершается мгновенно (менее 1 секунды)

  • Нет предупреждений о цепочке сертификатов

Шаг 2. Просмотр информации о сертификате

bash

Обратите внимание на поле Issuer (Издатель) — это УЦ, выдавший сертификат.

Шаг 3. Проверка установленных корневых сертификатов

bash

Решение

Вариант 1. Установка цепочки сертификатов (рекомендуется)

1. Скачать корневой сертификат Минцифры России

Официальные источники:

Обычно файл называется russian_trusted_root_ca.cer или rootca_ssl_rsa2022.cer.

2. Найти и скачать промежуточный сертификат УЦ

Промежуточный сертификат можно найти:

  • На сайте удостоверяющего центра, выдавшего сертификат

  • В расширении сертификата «Доступ к информации о центре сертификации» (AIA)

3. Установить сертификаты

bash

4. Проверить результат

bash

Подписание должно выполняться мгновенно без предупреждений.

Вариант 2. Открыть сетевой доступ для проверок

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

  • Серверам CRL удостоверяющих центров (обычно HTTP, порт 80)

  • Серверам OCSP (HTTP, порт 80)

  • Серверам AIA для загрузки промежуточных сертификатов

Этот вариант зависит от доступности внешних сервисов.

Вариант 3. Отключение проверки отзыва (не рекомендуется)

Внимание: Этот способ снижает безопасность и должен использоваться только для диагностики.

bash

Проверка после исправления

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

  2. Выполните подписание документа в 1С — операция должна занимать 5–15 секунд

  3. Убедитесь, что таймауты больше не возникают

Профилактика

При настройке сервера 1С на Linux с CryptoPro:

  1. Сразу после установки сертификата пользователя установите всю цепочку доверия

  2. Проверьте подписание из командной строки до запуска в продакшен

  3. Документируйте, какие сертификаты установлены, и их сроки действия

  4. Настройте мониторинг времени выполнения операций подписания

Последнее обновление