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

Уведомление

Icon
Error

7 Страницы<12345>»
Опции
К последнему сообщению К первому непрочитанному
Offline ArNed116  
#21 Оставлено : 27 ноября 2019 г. 11:26:18(UTC)
ArNed116

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

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

Сказал(а) «Спасибо»: 1 раз
Добрый день! У меня проблема на сервере не работает конструктор
Новый МенеджерКриптографии("Crypto-Pro GOST R 34.10-2012 Cryptographic Service Provider", "", 80)
но работает
Новый МенеджерКриптографии("Crypto-Pro GOST R 34.10-2001 Cryptographic Service Provider", "", 75)
это связано с установленной версией КриптоПро на сервере?
Offline Александр Лавник  
#22 Оставлено : 27 ноября 2019 г. 11:30:00(UTC)
Александр Лавник

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

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

Сказал «Спасибо»: 53 раз
Поблагодарили: 773 раз в 715 постах
Автор: ArNed116 Перейти к цитате
Добрый день! У меня проблема на сервере не работает конструктор
Новый МенеджерКриптографии("Crypto-Pro GOST R 34.10-2012 Cryptographic Service Provider", "", 80)
но работает
Новый МенеджерКриптографии("Crypto-Pro GOST R 34.10-2001 Cryptographic Service Provider", "", 75)
это связано с установленной версией КриптоПро на сервере?

Здравствуйте.

Стандарт ГОСТ Р 34.10-2012 поддерживается в КриптоПро CSP 4.0 и выше.
Техническую поддержку оказываем тут
Наша база знаний
thanks 1 пользователь поблагодарил Александр Лавник за этот пост.
ArNed116 оставлено 01.12.2019(UTC)
Offline aimbad  
#23 Оставлено : 3 апреля 2020 г. 11:24:03(UTC)
aimbad

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

Группы: Участники
Зарегистрирован: 01.04.2008(UTC)
Сообщений: 1
Откуда: Саратов

del

Отредактировано пользователем 4 апреля 2020 г. 16:07:15(UTC)  | Причина: Не указана

Offline Евгений_СК  
#24 Оставлено : 1 июня 2020 г. 14:15:20(UTC)
Евгений_СК

Статус: Участник

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

Сказал(а) «Спасибо»: 8 раз
Поблагодарили: 1 раз в 1 постах
Добрый день!
Есть ХТТП-сервис, авторизация с которым проходит следующим образом: с клиента отправляется запрос на авторизацию, в ответ приходит строка ("Data"), которую нужно подписать УКЭП, используя сертификат, и отправить на сервер; сервер в ответ выдает токен, и по этому токену уже идет получение данных.
На этапе получения токена возникла проблема - сервер ругается и не выдает токен.

Подпись происходит через 1С следующим образом:

Код:
oSigner_вар	= Новый COMОбъект("CAdESCOM.CPSigner"); // Объект, задающий параметры создания и содержащий информацию об усовершенствованной подписи. 
		
	ТекстДляПодписи_стр		= СокрЛП(ТекстДляПодписи_стр);
	sThumbprint_стр 		= СокрЛП(СертификатСсылка_вар.Отпечаток); // Отпечаток в Base64
	oSigner_вар.Certificate = МРК_ПолучитьСертификатПоОтпечатку_вар(sThumbprint_стр);
	oSigner_вар.KeyPin	= Пароль;
	
	
	
	oSignedData_вар	= Новый COMОбъект("CAdESCOM.CadesSignedData"); 
	oSignedData_вар.ContentEncoding = 0;
	
	oSignedData_вар.Content 	= СокрЛП(ТекстДляПодписи_стр);
	CADESCOM_CADES_TYPE_инт 	= 1; 
	bDetached_бул           	= Ложь; 
	EncodingType_инт        	= 0; 
	
	sSignedMessage_вар 	= oSignedData_вар.SignCades(oSigner_вар, CADESCOM_CADES_TYPE_инт, bDetached_бул, EncodingType_инт);


Если с такими же настройками подписывать через менеджер криптографии 1С (с подключенной компонентой для создания УКЭП), то всё в порядке, токен получается. Через CADesCOM - нет, и в этом проблема.

Посмотрел настройки в 1С:
Подпись, хэширование: GR 34.10-2012 256
Шифрование: GOST 28147-89
Подпись: CADES BES
Открепленная: Ложь
Base64НаВходе: ЛОжь
Включение серификата в подпись: Цепочка без корневого.

Также я заметил, что подписанная строка всегда начинается с одних и тех же символов: если подписывать через CADESCOM, то это символы: "MIIVogYJKoZIh", а если подписывать через 1С - символы "MIINWQYJKo". И еще, в 1С размер подписанного текста явно меньше. Я пробовал делать открепленную подпись через CADESCOM - не помогло. ВОзможно ли по подписанному тексту понять, какие настройки подписи используются в 1С и в Крипто ПРО? Например, по первым символам подписанного текста? Или я могу скинуть исходный текст (до подписания) и подписанный.
Offline NAlexV  
#25 Оставлено : 28 сентября 2021 г. 16:03:20(UTC)
NAlexV

Статус: Участник

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

Сказал(а) «Спасибо»: 3 раз
Цитата:
Коллеги, добрый день.
Нужно подписать сообщение в формате двоичных данных УКЭП с меткой времени CADES-T.
Написал вот такой код в 1С:

Код:
	
Крипто = Новый COMОбъект("CAdESCOM.CPSigner"); 
Крипто.Certificate = НайденныйСертификат;
ДанныеДляПодписи = Новый COMОбъект("CAdESCOM.CadesSignedData"); 
ДанныеДляПодписи.Content = ПодписываемыеДвоичныеДанные;
ТипПодписи = 1; 
ВидПодписиОтдельная = Истина;
КодировкаПодписи = 1;
Подпись = ДанныеДляПодписи.SignCades(Крипто, ТипПодписи, ВидПодписиОтдельная, КодировкаПодписи); 


Вопросы:
1. Возможно ли таким образом подписать двоичные данные или двоичные данные нужно перекодировать в Base64?
2. Прошу сообщить возможные значения для ТипПодписи и КодировкаПодписи и что означает каждое значение (семантику значений параметров)?
Offline Андрей *  
#26 Оставлено : 28 сентября 2021 г. 16:34:34(UTC)
Андрей *

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

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

Сказал «Спасибо»: 494 раз
Поблагодарили: 2035 раз в 1579 постах
Цитата:
ТипПодписи и КодировкаПодписи


В документации описано.
https://docs.cryptopro.r...om_class/cadessigneddata

Метод ICPSignedData2::SignCades


Цитата:

CADESCOM_CADES_T = 5

ДанныеДляПодписи.ContentEncoding = CADESCOM_BASE64_TO_BINARY; // = 1; // кодировка в BASE64
ДанныеДляПодписи.Content = закодированные в base64 бинарные данные


Крипто.TSAAddress = "http://qs.cryptopro.ru/tsp/tsp.srf";

...

Подпись = ДанныеДляПодписи.SignCades(Крипто, CADESCOM_CADES_T ...);
Техническую поддержку оказываем тут
Наша база знаний
Offline Андрей *  
#27 Оставлено : 28 сентября 2021 г. 16:36:20(UTC)
Андрей *

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

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

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

Вопросы:
1. Возможно ли таким образом подписать двоичные данные или двоичные данные нужно перекодировать в Base64?



Проверьте с ContentEncoding=0 и без кодирования в Base64.
Далее проверить подпись внешними приложениями.



Техническую поддержку оказываем тут
Наша база знаний
Offline NAlexV  
#28 Оставлено : 29 сентября 2021 г. 14:07:07(UTC)
NAlexV

Статус: Участник

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

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

Вопросы:
1. Возможно ли таким образом подписать двоичные данные или двоичные данные нужно перекодировать в Base64?



Проверьте с ContentEncoding=0 и без кодирования в Base64.
Далее проверить подпись внешними приложениями.





Андрей, спасибо за оперативный ответ.
С вашей помощью изменил код на:
Код:
			
Крипто = СоздатьCOMОбъектCAdESCOM("CPSigner"); 
Крипто.Certificate = ПолучитьСертификатПоОтпечатку(СтрокаОтпечатка);
Крипто.KeyPin = Константы.ПарольДоступаКЗакрытомуКлючу.Получить();
Крипто.TSAAddress = "http://qs.cryptopro.ru/tsp/tsp.srf";
ДанныеДляПодписи = СоздатьCOMОбъектCAdESCOM("CadesSignedData"); 
ДанныеДляПодписи.ContentEncoding = 1;
ДанныеДляПодписи.Content = ПолучитьBase64СтрокуИзДвоичныхДанных(ПодписываемыеДвоичныеДанные);
ТипПодписи = 5;	// CADES-T 
ВидПодписиОтдельная = Истина;
КодировкаПодписи = 1;	// _двоичная кодировка CAPICOM _
Подпись = ДанныеДляПодписи.SignCades(Крипто, ТипПодписи, ВидПодписиОтдельная, КодировкаПодписи); 

Функция СоздатьCOMОбъектCAdESCOM(ИмяКласса)
	
	Попытка
		
		Возврат Новый COMОбъект("CAdESCOM." + ИмяКласса);
		
	Исключение
		
		ВызватьИсключение ОписаниеОшибки() + Символы.ПС + Символы.ПС + 
			"Не удалось создать COM-Объект ""CAdESCOM." + ИмяКласса + Символы.ПС + Символы.ПС + 
			"Возможные причины:" + Символы.ПС +
			"1. Не установлен КРИПТО-ПРО" + Символы.ПС +
			"2. Не установлена компонента CAdESCOM" + Символы.ПС +
			"3. Используется операционная система, отличная от Microsoft Windows";
		
	КонецПопытки
	
КонецФункции

Функция ПолучитьСертификатПоОтпечатку(Знач Отпечаток)
	
	Store = СоздатьCOMОбъектCAdESCOM("Store");
	Store.Open(2, "My", 0);
	Certificates = Store.Certificates.Find(0, Отпечаток);
	Если Certificates.Count() <> 0 Тогда
		Certificate = Certificates.Item(1);
	Иначе
		ВызватьИсключение "Сертификат не найден";
	КонецЕсли;
	Store.Close();
	
	Возврат Certificate;
	
КонецФункции


Пока возвращается ошибка ((CAdESCOM.CadesSignedData.1): HTTP error occurred while sending request) при выполнении строки:
Код:
Подпись = ДанныеДляПодписи.SignCades(Крипто, ТипПодписи, ВидПодписиОтдельная, КодировкаПодписи);

Сделал заявку в сетевую службу на настройку сетевого доступа. Сейчас в ожидании решения проблемы

Хотелось бы понять возможно ли подписать двоичные данные без перекодировки их в Base64?
Сейчас при замене строки
Код:
ДанныеДляПодписи.Content = ПолучитьBase64СтрокуИзДвоичныхДанных(ПодписываемыеДвоичныеДанные);
на стоку
Код:
ДанныеДляПодписи.Content = ПодписываемыеДвоичныеДанные;
на этой строке возникает ошибка кодировки подписываемых данных - "Ошибка при установке значения атрибута контекста (Content): Типы не совпадают (0)", причем как ContentEncoding = 0 так и с ContentEncoding = 1.

Отредактировано пользователем 29 сентября 2021 г. 14:16:31(UTC)  | Причина: Не указана

Offline Андрей *  
#29 Оставлено : 29 сентября 2021 г. 14:19:23(UTC)
Андрей *

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

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

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

Хотелось бы понять возможно ли подписать двоичные данные без перекодировки их в Base64?
Сейчас при замене строки
Код:
ДанныеДляПодписи.Content = ПолучитьBase64СтрокуИзДвоичныхДанных(ПодписываемыеДвоичныеДанные);
на стоку
Код:
ДанныеДляПодписи.Content = ПодписываемыеДвоичныеДанные;
на этой строке возникает ошибка кодировки подписываемых данных.



при этом ДанныеДляПодписи.ContentEncoding = 0 указан сначала?

У меня нет 1С, чтобы проверить\увидеть. Присылайте полноценный текст\снимок ошибки.
1С или COM не принимает ДвоичныеДанные?
В чём сложности использовать кодирования?


Особенности представления данных в интерфейсе COM
Читали?
Техническую поддержку оказываем тут
Наша база знаний
Offline NAlexV  
#30 Оставлено : 29 сентября 2021 г. 14:26:09(UTC)
NAlexV

Статус: Участник

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

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

Хотелось бы понять возможно ли подписать двоичные данные без перекодировки их в Base64?
Сейчас при замене строки
Код:
ДанныеДляПодписи.Content = ПолучитьBase64СтрокуИзДвоичныхДанных(ПодписываемыеДвоичныеДанные);
на стоку
Код:
ДанныеДляПодписи.Content = ПодписываемыеДвоичныеДанные;
на этой строке возникает ошибка кодировки подписываемых данных.



при этом ДанныеДляПодписи.ContentEncoding = 0 указан сначала?

У меня нет 1С, чтобы проверить\увидеть. Присылайте полноценный текст\снимок ошибки.
1С или COM не принимает ДвоичныеДанные?
В чём сложности использовать кодирования?


Особенности представления данных в интерфейсе COM
Читали?


Ошибка именно в момент присвоения подписываемых данных свойству "Content". Т.е. получается, что Com объект не принимает данные. Значение свойства ContentEncoding класса CadesSignedData устанавливается до заполнения свойства "Content"
Вот весь код без ужимок:
Код:
Функция ПолучитьПодписьДокументаУКЭП(СтруктураСообщения, ПодписываемыеДвоичныеДанные, ОписаниеОшибки) Экспорт
	                                                               
	Подпись = Неопределено;
	
	СтрокаОтпечатка = Константы.ОтпечатокДействующегоСертификата.Получить();
	Отпечаток = ПолучитьДвоичныеДанныеИзHexСтроки(СтрокаОтпечатка);

	Крипто = Новый МенеджерКриптографии("Crypto-Pro GOST R 34.10-2012 Cryptographic Service Provider", "", 80);	
	Крипто.ПарольДоступаКЗакрытомуКлючу = Константы.ПарольДоступаКЗакрытомуКлючу.Получить();
	Крипто.АлгоритмПодписи = "GR 34.10-2012 256";

	Хранилище = Крипто.ПолучитьХранилищеСертификатов(ТипХранилищаСертификатовКриптографии.ПерсональныеСертификаты,РасположениеХранилищаСертификатовКриптографии.ДанныеПользователяОС);
	НайденныйСертификат = Хранилище.НайтиПоОтпечатку(Отпечаток);
	
	Если НайденныйСертификат = Неопределено Тогда
		ОписаниеОшибки = "Подпись файла УКЭП. По отпечатку не найден сертификат в хранилище";
		Возврат Неопределено;
	КонецЕсли;
	ДанныеОСертификате = ПолучитьДанныеОСертификате(НайденныйСертификат);
	СтруктураСообщения.Вставить("ДанныеОСертификате", ДанныеОСертификате);
	
	Попытка
		
		Если СтруктураСообщения.ПодписьКриптоМенеджером1С Тогда
			
			Подпись = Крипто.Подписать(ПодписываемыеДвоичныеДанные, НайденныйСертификат);
			
		Иначе
		
			Крипто = СоздатьCOMОбъектCAdESCOM("CPSigner"); 
			Крипто.Certificate = ПолучитьСертификатПоОтпечатку(СтрокаОтпечатка);
			Крипто.KeyPin = Константы.ПарольДоступаКЗакрытомуКлючу.Получить();
			Крипто.TSAAddress = "http://qs.cryptopro.ru/tsp/tsp.srf";
			ДанныеДляПодписи = СоздатьCOMОбъектCAdESCOM("CadesSignedData"); 
			ДанныеДляПодписи.ContentEncoding = 1;
			ДанныеДляПодписи.Content = ПолучитьBase64СтрокуИзДвоичныхДанных(ПодписываемыеДвоичныеДанные);
			//ДанныеДляПодписи.ContentEncoding = 1;
			//ДанныеДляПодписи.Content = ПодписываемыеДвоичныеДанные;
			ТипПодписи = 5;	// CADES-T 
			ВидПодписиОтдельная = Истина;
			КодировкаПодписи = 1;	// _двоичная кодировка CAPICOM _
			Подпись = ДанныеДляПодписи.SignCades(Крипто, ТипПодписи, ВидПодписиОтдельная, КодировкаПодписи); 
			
		КонецЕсли;
		
	Исключение
		
		ОписаниеОшибки = "Подпись файла УКЭП. " + ОписаниеОшибки();
		
	КонецПопытки;
	
	Возврат Подпись;
	
КонецФункции

Функция СоздатьCOMОбъектCAdESCOM(ИмяКласса)
	
	Попытка
		
		Возврат Новый COMОбъект("CAdESCOM." + ИмяКласса);
		
	Исключение
		
		ВызватьИсключение ОписаниеОшибки() + Символы.ПС + Символы.ПС + 
			"Не удалось создать COM-Объект ""CAdESCOM." + ИмяКласса + Символы.ПС + Символы.ПС + 
			"Возможные причины:" + Символы.ПС +
			"1. Не установлен КРИПТО-ПРО" + Символы.ПС +
			"2. Не установлена компонента CAdESCOM" + Символы.ПС +
			"3. Используется операционная система, отличная от Microsoft Windows";
		
	КонецПопытки
	
КонецФункции

Функция ПолучитьСертификатПоОтпечатку(Знач Отпечаток)
	
	Store = СоздатьCOMОбъектCAdESCOM("Store");
	Store.Open(2, "My", 0);
	Certificates = Store.Certificates.Find(0, Отпечаток);
	Если Certificates.Count() <> 0 Тогда
		Certificate = Certificates.Item(1);
	Иначе
		ВызватьИсключение "Сертификат не найден";
	КонецЕсли;
	Store.Close();
	
	Возврат Certificate;
	
КонецФункции
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
7 Страницы<12345>»
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.