При интеграции механизмов электронной подписи в конфигурациях на базе БСП или при вызове метода встроенного языка МенеджерКриптографии.ПроверитьСертификат() разработчики и администраторы нередко сталкиваются с ошибкой: «Цепочка сертификатов не может быть построена до доверенного корневого сертификата». При этом изменение свойства МенеджерКриптографии.ВключениеСертификатовВПодпись никак не влияет на ситуацию, так как данная настройка управляет только составом подписи, а не алгоритмом валидации цепочки доверия в операционной системе.
Разберем детально причины возникновения этой неполадки, посмотрим, как криптопровайдер строит цепочку доверия, и выясним, как по шагам восстановить корректную работу криптографии в 1С.
Проанализируем базовую причину, из-за которой часто возникает данная ошибка. Если проверка сертификата выполняется в коде на стороне сервера (в серверном вызове формы, общем модуле, фоновом или регламентном задании), процесс выполняется от имени системной службы 1С:Предприятия (по умолчанию в ОС Windows это пользователь usr1cv8).
Сертификаты, которые пользователь или администратор установил в личное хранилище («Текущий пользователь» / Current User), службе сервера просто недоступны. В результате метод проверки сертификата завершается сбоем, так как криптопровайдер под учетной записью службы не видит ни самого сертификата, ни звеньев его цепочки.
Для исправления ситуации выполним следующие действия:
certlm.msc от имени администратора.Рассмотрим структуру цепочки доверия. Сертификат конечного пользователя практически никогда не подписывается напрямую корневым сертификатом (например, Головным удостоверяющим центром Минцифры). Между ними находится один или несколько промежуточных (подчиненных) центров сертификации (УЦ ФНС, Федерального казначейства или коммерческого аккредитованного УЦ).
Если в системе установлен только корневой сертификат верхнего уровня и сертификат пользователя, цепочка оказывается разорванной. КриптоПро CSP не может проследить путь доверия от конечного узла к корню.
Разберем по шагам, как восстановить целостность цепочки:
При вызове метода ПроверитьСертификат() криптографическая подсистема обязана проверить статус действия каждого звена цепочки: не был ли отозван сертификат до истечения своего срока действия.
По умолчанию КриптоПро CSP обращается к точкам распространения списков отзыва (CRL Distribution Points) и сведениям о доступе к информации центра сертификации (Authority Information Access) по протоколу HTTP через интернет. Если сервер 1С находится в изолированном контуре, за межсетевым экраном или прокси-сервером, сетевые запросы завершаются по таймауту, и цепочка признается недействительной.
Для устранения проблемы в закрытых сетях выполним следующее:
.crl) для корневого и всех промежуточных УЦ цепочки.Посмотрим на настройки конфигурации, если база данных разработана на базе Библиотеки Стандартных Подсистем (БСП). В справочнике «Настройки электронной подписи и шифрования» определяется место выполнения операций: на клиенте или на сервере.
Если для программы криптографии или конкретного действия включен признак выполнения на сервере, система будет требовать наличия всей цепочки сертификатов на сервере 1С:Предприятия. Проверим соответствие настроек:
Если сервер 1С работает под управлением Linux, системные хранилища Windows отсутствуют. В этом случае взаимодействие с КриптоПро CSP происходит через консольные утилиты.
Проанализируем порядок установки цепочки в Linux-окружении:
certmgr от имени суперпользователя или пользователя usr1cv8.mRoot (или в хранилище пользователя uRoot для usr1cv8).mCA (или в хранилище uCA).-crl в соответствующее хранилище.usr1cv8 к каталогам и библиотекам КриптоПро CSP.После корректного размещения всех звеньев цепочки (корневого, промежуточных и списков отзыва) в правильной области видимости пользователя или компьютера метод МенеджерКриптографии.ПроверитьСертификат() успешно проходит валидацию без ошибок.