При работе с электронными листками нетрудоспособности (ЭЛН) пользователи часто сталкиваются с ситуацией, когда при нажатии кнопки «Получить из ФСС» программа выдает критическую ошибку: «Не удалось расшифровать файл». В журнале регистрации при этом фиксируется подробное описание: «Ошибка при вызове "РасшифрованныйФайл" менеджера криптографии. по причине: Набор ключей не определен». Рассмотрим подробно, почему возникает эта проблема и как ее устранить.
Эта ошибка означает, что 1С смогла найти сертификат открытого ключа, но не смогла получить доступ к соответствующему ему закрытому ключу (контейнеру). Для расшифровки данных, которые присылает ФСС (сейчас СФР), программа должна использовать ваш закрытый ключ. Если связь между сертификатом и контейнером нарушена или у системы нет прав на чтение этого контейнера, возникает сбой.
Проанализируем основные причины возникновения проблемы:
Первым делом проверим, «видит» ли операционная система закрытый ключ. Для этого выполним следующие действия:
Если после этого в свойствах сертификата на вкладке «Общие» появилась надпись «Есть закрытый ключ, соответствующий этому сертификату», значит, базовая настройка выполнена верно.
Одной из скрытых причин ошибки является разница в типах провайдеров КриптоПро. Рассмотрим ситуацию, когда сертификат выдан с типом 81 (Strong Cryptographic Service Provider), а программа ожидает тип 80 (Cryptographic Service Provider).
Выясним, какой тип провайдера используется у вас. Это можно увидеть в настройках 1С-Отчетности. Проанализируем решение, которое помогло многим пользователям: если 1С ругается на сертификат с типом 81, попробуйте переустановить сертификат через «КриптоПро CSP», явно указав стандартный тип провайдера, или используйте сертификат от другого удостоверяющего центра (например, Калуга-Астрал), который по умолчанию работает с типом 80.
Если ваша база 1С работает в клиент-серверном варианте, операция расшифровки выполняется на стороне сервера. Это означает, что МенеджерКриптографии обращается к хранилищу сертификатов под учетной записью, под которой запущена служба 1C:Enterprise 8.3 Server Agent (обычно это USR1CV8).
Посмотрим, что нужно сделать в этом случае:
HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Crypto Pro\Settings\Users. Пользователь, под которым работает сервер 1С, должен иметь права на чтение этой ветки.Расшифровка может не работать, если в настройках 1С-Отчетности выбраны устаревшие сертификаты самого контролирующего органа. С 2023 года ФСС стал частью СФР, и алгоритмы шифрования жестко перешли на ГОСТ Р 34.10-2012.
Проанализируем цепочку доверия:
Расшифровать вернет ошибку внешней компоненты.Программа обращается к криптопровайдеру через объект МенеджерКриптографии. Пример логики расшифровки (упрощенно) выглядит так:
// Инициализация менеджера с указанием провайдера и типа
Менеджер = Новый МенеджерКриптографии("", "", 80);
Менеджер.ПарольДоступаКЗакрытомуКлючу = "ВашПароль";
Попытка
// Метод ищет закрытый ключ в хранилище автоматически по отпечатку
ДанныеЭЛН = Менеджер.Расшифровать(ЗашифрованныйФайл);
Исключение
Сообщить("Ошибка расшифровки: " + ОписаниеОшибки());
КонецПопытки;
Если тип провайдера (в примере 80) не совпадает с тем, под которым установлен ключ в системе, или контейнер закрытого ключа не найден по идентификатору, 1С выдает ту самую ошибку Набор ключей не определен.
Чтобы окончательно выяснить причину, воспользуемся утилитой «Инструменты КриптоПро»:
Для успешного получения ЭЛН необходимо:
Следуя этой инструкции, вы сможете локализовать проблему и восстановить обмен данными с ФСС в кратчайшие сроки.