Медленное подписание документов через 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:
Пытается загрузить недостающие сертификаты из интернета
Проверяет списки отзыва сертификатов (CRL) через HTTP/LDAP
Выполняет OCSP-запросы для проверки статуса сертификата
Каждая из этих операций может занимать минуты, особенно если:
Серверы УЦ недоступны или работают медленно (частая причина — интернет на сервере 1С по белым спискам)
Файрвол блокирует исходящие соединения
DNS-резолвинг работает некорректно
Специфика платформы
Linux vs Windows
На Windows проблема встречается реже, потому что:
Корневые сертификаты Минцифры часто уже установлены через Windows Update
Браузеры и другое ПО могли ранее установить нужные сертификаты
Механизм автоматического обновления корневых сертификатов работает «из коробки»
На Linux сертификаты необходимо устанавливать вручную, так как:
Нет централизованного механизма распространения российских корневых сертификатов
Серверы 1С обычно устанавливаются «с нуля» без лишних компонентов
Администраторы часто устанавливают только сертификат пользователя, забывая о цепочке
Версии CryptoPro
Проблема воспроизводится на всех версиях CryptoPro CSP 4.0, 5.0, 5.0 R2 и выше. Это не баг, а штатное поведение — криптопровайдер обязан проверять цепочку доверия согласно стандартам.
Диагностика
Шаг 1. Проверка подписания из командной строки
Выполните от имени пользователя сервера 1С:
bash
Признаки проблемы:
Появляется сообщение «Цепочка сертификатов не проверена»
Операция выполняется с задержкой в несколько минут
Запрашивается подтверждение на использование сертификата