Ключевое слово в защите информации
КЛЮЧЕВОЕ СЛОВО
в защите информации
Получить ГОСТ TLS-сертификат для домена (SSL-сертификат)
Добро пожаловать, Гость! Чтобы использовать все возможности Вход или Регистрация.

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline Ivan Petrov  
#1 Оставлено : 5 апреля 2021 г. 22:57:06(UTC)
Ivan Petrov

Статус: Новичок

Группы: Участники
Зарегистрирован: 01.04.2021(UTC)
Сообщений: 3
Российская Федерация

Сказал(а) «Спасибо»: 2 раз
Здравствуйте, форумчане.

Столкнулся с задачей по формированию jwt токена.
Часть Signature представляет закодированную в Base64 ЭП по ГОСТ 34.10-2012 строку. Сама ЭП имеет формат detached PKCS #7.
На сервере лежит файл подписанный эпц в формате attached PKSC#7, кодировка der.

Строка имеет вид base64(header).base64(playload)
Например строка без части Playload: ewogICJhY3Rpb24iOiAiIiwKICAiZGF0YV90eXBlIjogIiIsCiAgIk9HUk4iOiAiIiwKICAiS1BQIjogIiIsCiAgImNlcnQ2NCI6ICIiCn0=.

Состав сертификата: Алгоритм подписи ГОСТ Р 34.11-2012/34.10-2012 256 бит, хэш-алгоритм подписи ГОСТ Р 34.11-2012 256 бит

Использую 1с 8.3.17 Пробую через cadescom.

Код:
	CADESCOM_PKCS7_TYPE = "0xffff";
	CADESCOM_CURRENT_USER_STORE = 2;
	CADESCOM_MY_STORE  = "My";
	CADESCOM_CONTAINER_STORE = 100;
	CADESCOM_STORE_OPEN_MAXIMUM_ALLOWED = 2;
	CADESCOM_CERTIFICATE_FIND_SUBJECT_NAME = 1;
	CADESCOM_BASE64_TO_BINARY = 1;
	CADESCOM_CERTIFICATE_FIND_SHA1_HASH = 0;
	
	Отпечаток = "d756f56e63c63f966c5bdaf9631b67fa477a1769";
	
	oStore = Новый COMОбъект("CAdESCOM.Store");
	oStore.Open(CADESCOM_CURRENT_USER_STORE, CADESCOM_MY_STORE, CADESCOM_STORE_OPEN_MAXIMUM_ALLOWED);
	
	oCertificates = oStore.Certificates.Find(CADESCOM_CERTIFICATE_FIND_SHA1_HASH, Отпечаток);
	oCertificate = oCertificates.Item(1);
	
	oSigner = Новый COMОбъект("CAdESCOM.CPSigner");
	oSigner.Certificate = oCertificate;
	oSigner.KeyPin = "12345678";
	
	oSignedData = Новый COMОбъект("CAdESCOM.CadesSignedData");
	oSignedData.ContentEncoding = CADESCOM_BASE64_TO_BINARY;
	
	oSignedData.Content = "ewogICJhY3Rpb24iOiAiIiwKICAiZGF0YV90eXBlIjogIiIsCiAgIk9HUk4iOiAiIiwKICAiS1BQIjogIiIsCiAgImNlcnQ2NCI6ICIiCn0=.";
	
	sSignedMessage = oSignedData.SignCades(oSigner, CADESCOM_PKCS7_TYPE, true);


Получаю ошибку:
Код:
Ошибка при установке значения атрибута контекста (Content)
Произошла исключительная ситуация (CAdESCOM.CadesSignedData.1): Параметр задан неверно.



В чем я не прав?
Спасибо
Offline Андрей *  
#2 Оставлено : 6 апреля 2021 г. 0:35:52(UTC)
Андрей *

Статус: Сотрудник

Группы: Участники
Зарегистрирован: 26.07.2011(UTC)
Сообщений: 12,630
Мужчина
Российская Федерация

Сказал «Спасибо»: 494 раз
Поблагодарили: 2035 раз в 1579 постах
Здравствуйте.

Автор: Ivan Petrov Перейти к цитате

oSignedData.ContentEncoding = CADESCOM_BASE64_TO_BINARY;

oSignedData.Content = "ewogICJhY3Rpb24iOiAiIiwKICAiZGF0YV90eXBlIjogIiIsCiAgIk9HUk4iOiAiIiwKICAiS1BQIjogIiIsCiAgImNlcnQ2NCI6ICIiCn0=.";

sSignedMessage = oSignedData.SignCades(oSigner, CADESCOM_PKCS7_TYPE, true);
[/code]

Получаю ошибку:
Код:
Ошибка при установке значения атрибута контекста (Content)
Произошла исключительная ситуация (CAdESCOM.CadesSignedData.1): Параметр задан неверно.



В чем я не прав?
Спасибо


Невнимательность?
Техническую поддержку оказываем тут
Наша база знаний
thanks 1 пользователь поблагодарил Андрей * за этот пост.
Ivan Petrov оставлено 06.04.2021(UTC)
Offline Ivan Petrov  
#3 Оставлено : 6 апреля 2021 г. 6:45:29(UTC)
Ivan Petrov

Статус: Новичок

Группы: Участники
Зарегистрирован: 01.04.2021(UTC)
Сообщений: 3
Российская Федерация

Сказал(а) «Спасибо»: 2 раз
Автор: Андрей * Перейти к цитате
Здравствуйте.

Автор: Ivan Petrov Перейти к цитате

oSignedData.ContentEncoding = CADESCOM_BASE64_TO_BINARY;

oSignedData.Content = "ewogICJhY3Rpb24iOiAiIiwKICAiZGF0YV90eXBlIjogIiIsCiAgIk9HUk4iOiAiIiwKICAiS1BQIjogIiIsCiAgImNlcnQ2NCI6ICIiCn0=.";

sSignedMessage = oSignedData.SignCades(oSigner, CADESCOM_PKCS7_TYPE, true);
[/code]

Получаю ошибку:
Код:
Ошибка при установке значения атрибута контекста (Content)
Произошла исключительная ситуация (CAdESCOM.CadesSignedData.1): Параметр задан неверно.



В чем я не прав?
Спасибо


Невнимательность?


И правда невнимательность. Спасибо :)

Подпись получилась, но ответ от сервера "Верификация токена провалена".
Offline Андрей *  
#4 Оставлено : 6 апреля 2021 г. 10:16:05(UTC)
Андрей *

Статус: Сотрудник

Группы: Участники
Зарегистрирован: 26.07.2011(UTC)
Сообщений: 12,630
Мужчина
Российская Федерация

Сказал «Спасибо»: 494 раз
Поблагодарили: 2035 раз в 1579 постах
Автор: Ivan Petrov Перейти к цитате
Сама ЭП имеет формат detached PKCS #7.
На сервере лежит файл подписанный эпц в формате attached PKSC#7, кодировка der.


Здесь сложно понять...
Требования ИС такие\какие? Точно PKCS #7?
Может RAW-подпись должна быть.. для токена? Примера нет?


+ по форуму поищите, обсуждалось много раз ...

Другие продукты » проверка подписи jwt / jws токенов

Техническую поддержку оказываем тут
Наша база знаний
thanks 1 пользователь поблагодарил Андрей * за этот пост.
Ivan Petrov оставлено 09.04.2021(UTC)
Offline Ivan Petrov  
#5 Оставлено : 9 апреля 2021 г. 8:18:13(UTC)
Ivan Petrov

Статус: Новичок

Группы: Участники
Зарегистрирован: 01.04.2021(UTC)
Сообщений: 3
Российская Федерация

Сказал(а) «Спасибо»: 2 раз
Автор: Андрей * Перейти к цитате
Автор: Ivan Petrov Перейти к цитате
Сама ЭП имеет формат detached PKCS #7.
На сервере лежит файл подписанный эпц в формате attached PKSC#7, кодировка der.

Здесь сложно понять...
Требования ИС такие\какие? Точно PKCS #7?


Точно PKCS#7

Проблема оказалась на стороне сервера. Не принимал тестовые сертификаты. Вопрос решен
В итоге решение получено с помощью МенеджерКритографии в 1с

Код:

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

Отредактировано пользователем 9 апреля 2021 г. 8:21:30(UTC)  | Причина: Форматирование кода

Offline Андрей *  
#6 Оставлено : 9 апреля 2021 г. 9:36:16(UTC)
Андрей *

Статус: Сотрудник

Группы: Участники
Зарегистрирован: 26.07.2011(UTC)
Сообщений: 12,630
Мужчина
Российская Федерация

Сказал «Спасибо»: 494 раз
Поблагодарили: 2035 раз в 1579 постах
Только зачем переменные называть ЗашифрованныеДанные...
Если это не так.
Техническую поддержку оказываем тут
Наша база знаний
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.