Как исправить ошибки CryptS 0x8009200b и 0x80090010 при настройке электронных больничных листов в 1С без 1С-Отчетности?

Системный администратор 1С v8.3 (Управляемые формы) 1С:Зарплата и Управление Персоналом Бухгалтерский учет IT и автоматизация бизнеса
← На главную

Настройка прямого взаимодействия с Социальным фондом России (СФР, ранее ФСС) для загрузки электронных больничных листов (ЭЛН) — задача частая, но сопряженная с техническими трудностями. Особенно много вопросов возникает, когда организация не использует встроенный сервис «1С-Отчетность», а настраивает обмен с использованием сторонних сертификатов (например, от СБиС/Тензор) в терминальном режиме или в клиент-серверной архитектуре. При этом пользователи регулярно сталкиваются с непонятными ошибками криптопровайдера CryptS.

В этой статье мы подробно разберем причины возникновения двух наиболее распространенных ошибок — 0x8009200b и 0x80090010 — и пошагово рассмотрим способы их решения.

Ошибка 0x8009200b: Не удается найти сертификат и закрытый ключ для расшифровки

Данный сбой обычно происходит при попытке отправить запрос на получение ЭЛН или подписать файл запроса. Программа выдает следующее диагностическое сообщение:

Объект CryptS : Ошибка при попытке получения контекста криптопровайдера. 0x8009200b (8009200b) Не удается найти сертификат и закрытый ключ для расшифровки. Не удалось подписать файл запроса ЭЛН!

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

Причина №1: Некорректная установка личного сертификата в систему

Самая частая ошибка администраторов и пользователей — установка личной подписи путем обычного импорта файла сертификата (с расширением .cer) двойным кликом мыши. При этом операционная система импортирует только открытый ключ, но не создает связь с контейнером закрытого ключа, расположенным на токене (флешке) или в реестре ПК.

Разберем по шагам правильный алгоритм установки через программу КриптоПро CSP:

  1. Откроем программу КриптоПро CSP на рабочем месте пользователя (или на сервере, если работа ведется в терминальной сессии).
  2. Перейдем на вкладку Сервис.
  3. Нажмем кнопку Просмотреть сертификаты в контейнере.
  4. В открывшемся окне нажмем кнопку Обзор, выберем нужный контейнер закрытого ключа нашей организации и нажмем ОК.
  5. Нажмем кнопку Далее. Откроется окно с реквизитами нашего сертификата.
  6. Нажмем кнопку Установить в левой нижней части окна.

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

Причина №2: Неправильное размещение сертификатов СФР по хранилищам

При ручной настройке обмена технологические сертификаты контролирующего органа (СФР) скачиваются с официального сайта ведомства и часто ошибочно устанавливаются в личное хранилище пользователя. Из-за этого 1С пытается сопоставить сертификат фонда с закрытым ключом вашей организации, что вызывает сбой 0x8009200b.

Рассмотрим правильную схему распределения сертификатов в операционной системе:

Ошибка 0x80090010: Отказано в доступе на терминальном сервере

Эта проблема характерна для работы в терминальном режиме (RDP). При попытке подписать или отправить данные система выдает ошибку:

Объект CryptS : Ошибка при подписании данных. 0x80090010 (80090010) Отказано в доступе. Не удалось подписать файл запроса ЭЛН!

Выясним причины ограничения прав доступа и способы их устранения.

Причина №1: Отсутствие прав у терминального пользователя на чтение контейнера из реестра сервера

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

Для исправления прав выполним следующие действия:

  1. Откроем редактор реестра regedit от имени администратора сервера.
  2. Перейдем к ветке реестра, где хранятся контейнеры пользователей:
    
    HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Crypto Pro\Settings\Users\<SID-пользователя>\Keys
    
    (Для 32-битных операционных систем путь будет без подраздела WOW6432Node).
  3. Кликнем правой кнопкой мыши по разделу Keys (или по папке конкретного ключа) и выберем пункт Разрешения.
  4. Добавим учетную запись пользователя терминала (или группу пользователей) и предоставим им права на Полный доступ и Чтение.

Причина №2: Проблемы с пробросом физических токенов (флешек) по RDP

Если закрытый ключ находится на токене, подключенном к локальному компьютеру, стандартные политики безопасности Windows Server могут блокировать к нему доступ из удаленной сессии. Рекомендуется переносить контейнеры непосредственно в локальный реестр сервера или использовать специализированное ПО для проброса смарт-карт.

Особенности настройки обмена в клиент-серверном режиме (SQL)

Если база данных 1С развернута в клиент-серверном варианте, фоновые и регламентные задания по умолчанию выполняются на стороне сервера приложений 1С под служебной учетной записью (часто это USR1CV8). Эта учетная запись не имеет доступа к сертификатам, установленным в профиле обычного терминального пользователя Windows, что приводит к краху операций шифрования при автоматическом обмене.

Рассмотрим два пути обхода этой проблемы:

Способ 1. Перенос выполнения криптографических операций на клиент

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

  1. Перейдем в раздел Администрирование -> Настройки электронной подписи и шифрования.
  2. Перейдем на вкладку Программы и откроем настройки используемого криптопровайдера.
  3. Найдем параметр Выполнять криптографические операции и установим значение На клиенте.

Способ 2. Установка сертификатов непосредственно на сервере для учетной записи службы 1С

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

  1. Временно разрешим интерактивный вход в систему для учетной записи службы 1С в локальных политиках безопасности сервера.
  2. Зайдем в операционную систему сервера под учетной записью USR1CV8.
  3. Установим программу КриптоПро CSP, импортируем личный сертификат и технологические ключи СФР по правилам, описанным выше.
  4. Выйдем из сессии и вернем обратно настройки безопасности службы.

Временный обходной путь: Загрузка ЭЛН из файла

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

  1. Авторизуемся в личном кабинете страхователя на портале СФР через обычный веб-браузер (где настроить работу плагина подписи значительно проще).
  2. Найдем необходимый больничный лист и выгрузим его данные в формате XML.
  3. В программе 1С (начиная с версии ЗУП 3.1.3.253) откроем документ Больничный лист.
  4. Нажмем кнопку Загрузить из файла и выберем скачанный XML-документ. Все реквизиты заполнятся автоматически без прямого обращения программы к серверам СФР через локальные библиотеки криптопровайдеров.
← На главную