Ошибка при вызове pkcs7расшифровать менеджера криптографии

Содержание

Ошибка при вызове pkcs7расшифровать менеджера криптографии

Ошибка интерфейса модуля криптографии. Модуль криптографии не может выполнить требуемое действие, т.к. контекст был получен в ограниченном режиме.

Номер карточки: SD0011817

При возникновении ошибки «Ошибка интерфейса модуля криптографии. Модуль криптографии не может выполнить требуемое действие, т.к. контекст был получен в ограниченном режиме.» необходимо выполнить проверку электронной подписи.

Алгоритм проверки электронной подписи:

В программном продукте 1С необходимо

1. перейти в раздел «Администрирование»

2. «Обмен электронными документами»

3. «Настройка электронной подписи и шифрования»

4. На вкладке «Сертификаты» открыть используемый сертификат

5. Нажать на кнопку «Проверить»

6. Ввести пароль закрытой части ключа (при его наличии) и нажать «Проверить»

! Обращаем Ваше внимание, что программа сама увеличит количество * в поле «Пароль:» до 16 при проверке. Данное поведение является штатным и выступает дополнительной защитой конфиденциальных данных в виде количества символов в пароле. Проверка будет осуществлена на основании введенных Вами данных .

Если в ходе проверки напротив пункта «Подписание данных» возникнет сигнализирующий об ошибке красный символ, на него необходимо нажать для открытия технической информации об ошибке.

Если в технической информации об ошибке указано » «Ошибка интерфейса модуля криптографии. Модуль криптографии не может выполнить требуемое действие, т.к. контекст был получен в ограниченном режиме.» необходимо выполнить проверку электронной подписи.» это обозначает, что проверка сертификата осуществляется без ввода пароля, хотя на контейнере закрытой части ключа установлен пароль.
Рекомендации:

Уточнить у ответственных лиц организации пароль на электронную подпись.

! Обращаем Ваше внимание, что при копировании контейнера из криптопровайдера, последний просит ввести новый пароль для копии закрытой части ключа, которая в последующем могла быть установлена на Вашем рабочем месте.

! Также сообщаем, что ни техническая поддержка 1С-ЭДО, ни Удостоверяющий центр, который выдал сертификат, не располагают информацией о паролях пользователей. Данная информация является строго конфиденциальной и не подлежит разглашению. Если рекомендации Вам не помогли и пароль утрачен безвозвратно, то единственным выходом из данной ситуации будет выпуск нового сертификата.

АйТиБложик

Маленький IT блог с характером 1С.

Страницы

Поиск по блогу

пятница, 24 апреля 2015 г.

Шифрование строковых данных. Менеджер криптографии.

Шифрование — обратимое преобразование некой информации с целью сокрытия от неавторизованных лиц и, в это же время, предоставление, авторизованным пользователям доступа к ней. Главная задача шифрования — это соблюдение конфиденциальности передаваемой информации.

Методы шифрования:

  • Симметричное шифрование — использует один и тот же ключ и для зашифрования, и для расшифрования;
  • Асимметричное шифрование — использует два разных ключа: один для зашифрования (который также называется открытым), другой для расшифрования (называется закрытым).

Объект МенеджерКриптографии платформы 1С позволяет шифровать данные, используя симметричное шифрование, так как криптопровайдеры ОС Windows используют данный вид шифрования (RC2, RC4).

Создание временного сертификата

Так же желательно создавать сертификат с параметром -sp, который позволит задать имя криптопровайдера для сертификата, например, «Microsoft Strong Cryptographic Provider», так как для инициализации объекта МенеджерКриптографии требуется в конструкторе указывать имя криптопровайдера (имя модуля провайдера).

Читать еще:  Не является однозначным ошибка c

Пример создания временного сертификата для тестирования шифрования в 1С:
makecert.exe -r -pe -n CN=»www.example.com» -ss my -sr currentuser
-sky exchange -sp «Microsoft Strong Cryptographic Provider»

Внимание: пароль на контейнер закрытого ключа при создании сертификата в данном случае не устанавливается!

Реализация шифрования

Функция шифрования строковых данных:
// Функция выполняет шифрование строковых данных.
//
// Параметры
// СтроковыеДанные — Строка — данные для шифрования;
// Отпечаток — Строка — отпечаток сертификата закодированный в Base64;
// ИмяКП — Строка — имя модкля криптографии;
// ТипКП — Строка — Тип модуля криптографии.
//
// Возвращаемое значение:
// Строка — зашифрованный данные формата PKCS#7 закодированные в Base64.
//
&НаКлиенте
Функция ЗашифроватьСтроку(СтроковыеДанные, Отпечаток, ИмяКП, ТипКП)

ИмяВременногоФайла = ПолучитьИмяВременногоФайла();
ЗаписьТекста = Новый ЗаписьТекста(ИмяВременногоФайла, «CESU-8»);
ЗаписьТекста.Записать(СтроковыеДанные);
ЗаписьТекста.Закрыть();

МенеджерКриптографии = Новый МенеджерКриптографии(ИмяКП, «», ТипКП);
ХранилищеСертификатов = МенеджерКриптографии.ПолучитьХранилищеСертификатов(
ТипХранилищаСертификатовКриптографии.ПерсональныеСертификаты,
РасположениеХранилищаСертификатовКриптографии.ДанныеПользователяОС);
Сертификат = ХранилищеСертификатов.НайтиПоОтпечатку(Base64Значение(Отпечаток));

ЗашифрованныеДанные = МенеджерКриптографии.Зашифровать(ИмяВременногоФайла, Сертификат);

В данной функции строковые данные записываются в файл в кодировке CESU-8, т.е. UTF-8 без BOM. Инициализируется менеджер криптографии и по отпечатку происходит поиск сертификата в хранилище сертификатов текущего пользователя в ветке Личное.

Далее происходит шифрование строковых данных, используя найденный сертификат, тем самым, расшифрование сможет произвести тот пользователь, который имеет доступ к закрытому ключу этого сертификата. Результатом шифрования являются двоичные данные, которые кодируются в строку Base64. Двоичные данные имеют формат PKCS#7.

Функция расшифрования строковых данных:
// Функция выполняет расшифровку строковых данных.
//
// Параметры
// ЗашифрованныеДанные — Строка — зашифрованный данные формата PKCS#7 закодированные в Base64;
// Отпечаток — Строка — отпечаток сертификата закодированный в Base64;
// ПарольЗакрытогоКлюча — Строка — пароль к контейнеру закрытого ключа;
// ИмяКП — Строка — имя модкля криптографии;
// ТипКП — Строка — Тип модуля криптографии.
//
// Возвращаемое значение:
// Строка — расшифрованные строковые данные.
//
&НаКлиенте
Функция РасшифроватьСтроку(ЗашифрованныеДанные, Отпечаток, ПарольЗакрытогоКлюча, ИмяКП, ТипКП)

МенеджерКриптографии = Новый МенеджерКриптографии(ИмяКП, «», ТипКП);
МенеджерКриптографии.ПарольДоступаКЗакрытомуКлючу = ПарольЗакрытогоКлюча;

ИмяВременногоФайла = ПолучитьИмяВременногоФайла();
РасшифрованныеДанные.Записать(ИмяВременногоФайла);
ЧтениеТекста = Новый ЧтениеТекста(ИмяВременногоФайла, «CESU-8»);
СтрокаДанных = ЧтениеТекста.Прочитать();
ЧтениеТекста.Закрыть();

В данной функции инициализируется менеджер криптографии и указывается пароль к контейнеру закрытого ключа. Далее происходит расшифровка зашифрованных данных. Результатом расшифрования являются двоичные данные, которые записываются в файл с кодировкой CESU-8 и считываются из него.

Скачать обработку шифрования/расшифрования строковых данных можно по этой ссылке.

Пример работы обработки:

На рисунке 4 поле «Пароль» пустое, так как при создании временного сертификата мы не указывали пароль на контейнер закрытого ключа.

МенеджерКриптографии: ошибка при подписи «ошибка интерфейса модуля криптографии: отсутствует набор ключей»

при попытке использования метода Подписать() менеджера криптографии выскакивает ошибка «ошибка интерфейса модуля криптографии: отсутствует набор ключей»

из других программ с помощью этой же ЭЦП подписывает нормально. ключик настроен через КриптоПро.
релиз 1С 8.2.15.319

в чём может быть проблема?

для (4) сторно, ЭЦП создаётся, всё-таки, обычная. подниму темку — из-за чего такое может быть?

пробовал и на 8.2.15, и на 8.2.16

Тест. Проверка операций формирования/проверки ЭЦП на сервере.
Код ошибки 114. Не удалось выполнить операции формирования/проверки ЭЦП на сервере.

Сертификат не имеет связи с закрытым ключом.
Тест. Проверка операций шифрования/расшифровки на сервере.
Код ошибки 113. Не удалось выполнить операции шифрования/расшифровки на сервере.

А с сервера (на клиенте) так:

Тест. Проверка операций шифрования/расшифровки на компьютере.
Пройден успешно.

Тест. Проверка операций формирования/проверки ЭЦП на компьютере.
Пройден успешно.

Что бы это могло значить? это сертификат для подписантов. Его что на сервер ставить низя.

Неверный тип сообщения в формате PKCS#7 (код: 0xE0700022)

Валидата → СКАД Сигнатура → Неверный тип сообщения в формате PKCS#7 (код: 0xE0700022)

Страницы 1

Чтобы отправить ответ, вы должны войти или зарегистрироваться

Сообщений 9

1 Тема от badik 2017-10-17 16:19:16 (2017-10-17 16:20:09 отредактировано badik)

  • badik
  • New member
  • Неактивен
  • Зарегистрирован: 2017-10-17
  • Сообщений: 5

Тема: Неверный тип сообщения в формате PKCS#7 (код: 0xE0700022)

Разработчики нашей организации сделали попытку соединить Java c Сигнатурой
посредством своей DLL (интерфейс вроде бы spki1) .
в Java выполняется код который возвращает ЭП.

Полученные файлы не проходят проверку в АРМ КБР.
Ошибка:Неверный тип сообщения в формате PKCS#7 (код: 0xE0700022)
В АРМ КБР было выполнено преобразование файлов УФЭБС для АРМ РКС Сигнатуры.
Проверка закончилась успешно

при анализе подписи было выяснено что подпись на несколько байт длинее обычной (полученной spki1utl или PKI.VCERT)

Анализ ASN.1 показал что почему то заполнен SignedData/contentInfo/content
SignedData/contentInfo/contentType = 1.2.840.113549.1.7.1

Вопроса два:
1. Как он смог заполнится?
2. Почему АРМ РКС успешно проверил эту подпись?

Читать еще:  Код ошибки 1105

2 Ответ от alart 2017-10-17 18:22:33

  • alart
  • Administrator
  • Неактивен
  • Откуда: Москва
  • Зарегистрирован: 2011-07-28
  • Сообщений: 281

Re: Неверный тип сообщения в формате PKCS#7 (код: 0xE0700022)

А с какими параметрами выполняется вызов VCERT_SignMem? Какие флаги указываются в структуре sign_param_t?

3 Ответ от badik 2017-10-17 20:11:22

  • badik
  • New member
  • Неактивен
  • Зарегистрирован: 2017-10-17
  • Сообщений: 5

Re: Неверный тип сообщения в формате PKCS#7 (код: 0xE0700022)

Со слов разработчиков, только отсоединеная и pkcs7
В протоколы АРМ РКС на правильную и эту подпись похожи.
Мне пришлось доказывать что ошибка в АРМ КБР возникла при подписании
Аналогичная ошибка была у пилотов в трех регионах.
Исходного кода промежуточной длл, где описаны прототипы у меня нет. Завтра спрошу у разработчиков.

4 Ответ от badik 2017-10-18 07:57:13 (2017-10-18 12:01:07 отредактировано badik)

  • badik
  • New member
  • Неактивен
  • Зарегистрирован: 2017-10-17
  • Сообщений: 5

Re: Неверный тип сообщения в формате PKCS#7 (код: 0xE0700022)

Пример ПП с ЭП без персональных данных
файл УФЭБС с ЗК закодирован в base64, ошибка подписи в АРМ КБР

data (ЗК UTF8) закодирована в base64

ЭП закодирована в base64

5 Ответ от ant 2017-10-24 12:57:09

  • ant
  • Administrator
  • Неактивен
  • Откуда: Москва
  • Зарегистрирован: 2007-02-02
  • Сообщений: 322

Re: Неверный тип сообщения в формате PKCS#7 (код: 0xE0700022)

Добрый день, в Вашей подписи присутствуют данные

55| 6| 1| CONTEXT SPECIFIC (0) :
57| 4| 1| OCTET_STRING : ’60E5BA02′

А в случае отсоединенной подписи, данных быть не должно.

6 Ответ от badik 2017-10-26 16:25:13

  • badik
  • New member
  • Неактивен
  • Зарегистрирован: 2017-10-17
  • Сообщений: 5

Re: Неверный тип сообщения в формате PKCS#7 (код: 0xE0700022)

Хорошо. Свой механизм простановки подписи Разработчики исправили. АРМ КБР подписи проверяет.

Остался вопрос:
Механизмы проверки ЭП в АРМ КБР (-Н) и АРМ РКС должны быть одинаковыми.
Почему «АРМ Разбора Конфликтных Ситуаций Сигнатуры» считает эту не правильную подпись в отдельном файле корректной?

7 Ответ от ant 2017-10-27 12:46:56

  • ant
  • Administrator
  • Неактивен
  • Откуда: Москва
  • Зарегистрирован: 2007-02-02
  • Сообщений: 322

Re: Неверный тип сообщения в формате PKCS#7 (код: 0xE0700022)

АРМ РКС предназначен для криптографической проверки подписи и признак, выставленный в АРМ РКС (что подпись отсоединенная), имеет приоритет над признаком в файле.
Если Вам необходимо получить код возврата как в АРМ КБР используйте утилиту командной строки spki1utl.exe

8 Ответ от badik 2017-10-27 14:35:28 (2017-10-27 14:37:19 отредактировано badik)

  • badik
  • New member
  • Неактивен
  • Зарегистрирован: 2017-10-17
  • Сообщений: 5

Re: Неверный тип сообщения в формате PKCS#7 (код: 0xE0700022)

В типовом договоре с ЦБ и в нашем тоже говорится об использовании в конфликтных ситуациях только АРМ РКС.

В АРМ РКС на проверку подаются ДВА файла «отдельной ЭП» и сами Данные. Первый файл ЭП содержит признак встроенной подписи. АРМ РКС игнорирует это не соответствие действительности, не отражает в протоколе
и продолжает проверку дальше.

9 Ответ от ant 2017-10-27 15:07:26

  • ant
  • Administrator
  • Неактивен
  • Откуда: Москва
  • Зарегистрирован: 2007-02-02
  • Сообщений: 322

Re: Неверный тип сообщения в формате PKCS#7 (код: 0xE0700022)

АРМ РКС игнорирует данные в подписи, так как ему явно указывается что данных там нет.
Согласен с Вами, в протокол добавим добавим запись о наличии данных в отсоединенной подписи.

Ошибка при вызове pkcs7расшифровать менеджера криптографии

При получении/отправке отчётных форм, сообщений или другой информации, данные поступают/передаются в зашифрованном виде. Для их расшифровки/шифрования системы криптографии, установленные на компьютере пользователя, обращаются к электронной подписи, используемой пользователем для ФГИС ЕИАС.

При возникновении проблем шифрования/расшифровки пользователю следует убедиться соответствии используемой версии модуля «ЕИАС Мониторинг» (АРМ Специалиста) типу используемой электронной подписи, а так же в корректности установки/настроки средств криптографии и сертификатов электронных подписей.

I. Алгоритм шифрования

Если модуль «ЕИАС Мониторинг» (АРМ Специалиста) выдает сообщение «Ошибка при подписании файла. Указан неправильный алгоритм», это говорит об использовании несовместимой версии модуля «ЕИАС Мониторинг» (АРМ Специалиста) с применяемой пользователем электронной подписью.

ФГИС ЕИАС в рамках модуля «ЕИАС Мониторинг» (АРМ Специалиста) обеспечивает поддержку электронных подписей, соответствующих ГОСТ Р 34.10-2001 (включительно до 31.12.2019, согласно письму ФСБ России №149/7/6-363 от 07.09.2018), а так же электронных подписей, соответствующих ГОСТ Р 34.10-2012 (на текущий момент и далее).

В системе ФГИС ЕИАС поддерживается работа электронных подписей, соответствующих ГОСТ Р 34.10-2012 и ГОСТ Р 34.10-2001. Для работы с теми или иными ключами, следует использовать соответствующую версию модуля «ЕИАС Мониторинг» (АРМ Специалиста).

Дистрибутивы модуля «ЕИАС Мониторинг» (АРМ Специалиста) доступны для загрузки на сайте ФГИС ЕИАС http://eias.ru/

Читать еще:  Ошибка данных crc ssd при инициализации

II. Работа систем криптографии и сертификатов электронных подписей

Если модуль «ЕИАС Мониторинг» (АРМ Специалиста) выдает сообщение «Не найден сертификат для расшифровки полученных данных», «Неправильный параметр набора ключей», «Произошла внутренняя ошибка в цепочке сертификатов», «Не удается построить цепочку сертификатов для доверенного корневого центра» и т.п., это говорит о том, что на локальном месте пользователя произведена некорректная установка ЭП, либо отсутствуют необходимые корневые сертификаты, либо имеется ограничение на уровне системы криптографии.



Для исправления ошибки необходимо проверить следующее:

1). На компьютере пользователя должен быть установлен только один криптопровайдер (CSP). Использование разных криптопровайдеров на одном рабочем месте приводит к конфликту механизмов шифрования.

Другие системные требования к рабочему месту указаны в знании #44.

2). Сертификат должен быть установлен для Пользователя, а не для локального компьютера.

При использовании КриптоПро CSP перейдите в оснастку «Сертификаты»: Пуск -> Все рограммы -> Крипто-Про -> Сертификаты».

Здесь необходимо проверить, не добавлен ли ваш личный сертификат в хранилище сертификатов для локального компьютера.

Разверните список «Сертификаты (локальный компьютер) -> Личное -> Реестр -> Сертификаты». Если в данном списке присутствует личный сертификат пользователя вашей организации — его необходимо удалить .

Личный сертификат должен храниться только в «Сертификаты — текущий пользователь -> Личное -> Реестр -> Сертификаты».

Также проверьте хранилища «Другие пользователи» для локального компьютера и текущего пользователя. Личного сертификата там также быть не должно, если он есть — удалить.

3). Убедитесь, что на локальном компьютере установлены корневые сертификаты издателя.

Для этого откройте личный сертификат пользователя и переключитесь на вкладку «Путь сертификации». В цепочке сертификации не должно быть никаких крестиков и восклицательных знаков.

Наличие крестиков и восклицательных знаков говорит о том, что данные корневые сертификаты не установлены.

Для устранения этой ситуации необходимо отметить требуемый сертификат и нажать кнопку «Просмотр сертификата». В открывшемся окне на вкладке «Общие» нажать на кнопку «Установить сертификат» и поместить данный сертификат в хранилище «Доверенные корневые центры сертификации». В случае отсутствия кнопки установки, переключиться на вкладку «Состав» и экспортировать корневой сертификат себе на компьютер по кнопке «Копировать в файл», затем установить полученный сертификат в хранилище «Доверенные корневые центры сертификации».

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

Также необходимо убедиться, что установлены корневые сертификаты, необходимые для работы модулей и компонентов (в том числе отчетных форм) ФГИС ЕИАС. Запрос на установку корневых сертификатов выдается системой при работе, но если этого не происходит и дальнейшая работа невозможна, то следует установить их вручную, загрузив набор корневых сертификатов.

Установка набора корневых сертификатов производится в полуавтоматическом режиме — для этого следует перейти в указанную выше оснастку «Сертификаты»: Пуск -> Все рограммы -> Крипто-Про -> Сертификаты» и перейти в хранилище «Доверенные корневые центры сертификации».

Развернуть вложенные разделы «Доверенные корневые центры сертификации -> Реестр -> Сертификаты» и кликнуть правой кнопкой мыши на последнем каталоге, выбрав из контекстного меню «Все задачи — Импорт. «

В открывшемся окне мастера установки по кнопке «Обзор» перейдите к папке, где был сохранен скачанный набор корневых сертификатов. В выпадающем списке доступных типов файлов для импорта укажите значение «Сертификаты PKCS #7 (*.spc; *.p7b)» и выберите загруженный файл trust_eias_certs.p7b

В фоновом режиме запустится установка сертификатов в хранилище доверенных корневых центров сертификации. При отсутствии на вашем ПК того или иного сертификата, система выдаст диалоговое окно с уведомление об установке, с которой необходимо согласиться по кнопке «Да».

Данное разрешение будет запрошено для каждого ранее отсутствуещего сертификата в хранилище, следует согласиться на установку каждого из них. По окончании процедуры установки система выдаст соответствующее уведомление. Не следует закрывать мастер импорта сертификатов до завершения процедуры установки.

Для корректной работы ФГИС ЕИАС так же требуется установка корневых сертификатов издателя электронной подписи, в частности УЦ СКБ Контур.

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

Инструкция по установке ЭП с примером приведена в знании #31.

5). Убедитесь, что номер лицензии на право инспользования крипровайдера введён корректно (знание #37).

6). В настройках модуля «ЕИАС Мониторинг» (АРМ Специалиста) убедитесь, что для каждого из подключаемых серверов указан действующий сертификат.

IT Новости из мира ПК
Добавить комментарий