logo Наши способы организации безопасного удалённого доступа к рабочим местам и корпоративным ресурсам
Добро пожаловать, Гость! Чтобы использовать все возможности Вход или Регистрация.

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline fixer_gold  
#1 Оставлено : 24 марта 2020 г. 18:28:08(UTC)
fixer_gold

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

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

Сказал(а) «Спасибо»: 1 раз
При выполнении подписания на строке Результат = ПодписанныеДанные.SignCades(Подписант,0,0);
появляется ошибка
Произошла исключительная ситуация (CAdESCOM.CadesSignedData.1): Не удается построить цепочку сертификатов для доверенного корневого центра.
Причем сертификат личный установлен верно и цепочку он видит когда заходишь в сертификат, сертификат не просрочен. Не могу понять в чем причина
sertifikat.png (9kb) загружен 5 раз(а).
обХранСерт = Новый COMОбъект("CAdesCOM.Store");
обХранСерт.Open(2);

СерийныйНомерСертификата = "01A8028D64013F02028F";


мсСерт = обХранСерт.Certificates;
Серт = Неопределено;
Для каждого текСерт Из мсСерт Цикл
Если текСерт.ValidToDate > ТекущаяДата() И текСерт.SerialNumber = СерийныйНомерСертификата Тогда
Серт = текСерт;
Прервать;
КонецЕсли;
КонецЦикла;

ВходнойПоток = Новый COMОбъект("ADODB.Stream");
ВходнойПоток.Type = 1;
ВходнойПоток.Mode = 3;
ВходнойПоток.Open();
ВходнойПоток.LoadFromFile("e:\1c-Equifax\Score_МНМН-00000069_out.xml");

ВходныеДанные = ВходнойПоток.Read(-1);

Подписант = Новый COMОбъект("CAdesCOM.CPSigner");
Подписант.Certificate = Серт;
Подписант.Options = 1;
Подписант.TSAAddress = "http://cryptopro.ru/tsp/";
ПодписанныеДанные = Новый COMОбъект("CAdESCOM.CadesSignedData");
ПодписанныеДанные.Content = ВходныеДанные;

Результат = ПодписанныеДанные.SignCades(Подписант,0,0);
ДвоичныеДанные = Base64Значение(Результат);
ДвоичныеДанные.Записать("e:\1c-Equifax\Score_МНМН-00000069_out.xml"+".sig");
Offline Александр Лавник  
#2 Оставлено : 24 марта 2020 г. 19:06:08(UTC)
Александр Лавник

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

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

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

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

Используйте службу штампов времени, сертификату оператора которой есть доверие,а не тестовую.
Техническую поддержку оказываем тут
Наша база знаний
Offline two_oceans  
#3 Оставлено : 25 марта 2020 г. 5:15:06(UTC)
two_oceans

Статус: Эксперт

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

Сказал(а) «Спасибо»: 62 раз
Поблагодарили: 219 раз в 206 постах
Автор: fixer_gold Перейти к цитате
ПодписанныеДанные.Content = ВходныеДанные;
Насколько помню так делать нельзя, нужен промежуточный объект между стримом и SignedData. Суть в том, что при чтении ADODB.Stream в двоичном режиме возвращается закодированный "безопасный" массив, который неплохо бы раскодировать в "нормальные байты" перед подачей на подписание - иначе выйдет подпись совсем не того, что было в исходном файле (так как представление в оперативной памяти разное). Здесь на форуме был пример для 1С как это сделать, на VBS выполняется аналогично.

Отредактировано пользователем 25 марта 2020 г. 5:18:21(UTC)  | Причина: Не указана

Offline fixer_gold  
#4 Оставлено : 25 марта 2020 г. 6:34:14(UTC)
fixer_gold

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

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

Сказал(а) «Спасибо»: 1 раз
Автор: two_oceans Перейти к цитате
Автор: fixer_gold Перейти к цитате
ПодписанныеДанные.Content = ВходныеДанные;
Насколько помню так делать нельзя, нужен промежуточный объект между стримом и SignedData. Суть в том, что при чтении ADODB.Stream в двоичном режиме возвращается закодированный "безопасный" массив, который неплохо бы раскодировать в "нормальные байты" перед подачей на подписание - иначе выйдет подпись совсем не того, что было в исходном файле (так как представление в оперативной памяти разное). Здесь на форуме был пример для 1С как это сделать, на VBS выполняется аналогично.


Так делать можно, по крайней мере с CAPICOM.DLL, но от него пришлось отказаться так как он не работает на 1Сх64, на х32 все нормально подписывается и штамп времени вообще указывать не нужно.
Если я указываю ВходныеДанные = "какаяТаСтрока"; результат тот же от этого ошибка не исчезает.

Тогда вопрос как мне узнать какой штамп времени я могу использовать вместо тестового? Или как я могу узнать где взять нужный мне?

Отредактировано пользователем 25 марта 2020 г. 6:38:35(UTC)  | Причина: Не указана

Offline Александр Лавник  
#5 Оставлено : 25 марта 2020 г. 9:37:40(UTC)
Александр Лавник

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

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

Сказал «Спасибо»: 25 раз
Поблагодарили: 418 раз в 402 постах
Автор: fixer_gold Перейти к цитате
Автор: two_oceans Перейти к цитате
Автор: fixer_gold Перейти к цитате
ПодписанныеДанные.Content = ВходныеДанные;
Насколько помню так делать нельзя, нужен промежуточный объект между стримом и SignedData. Суть в том, что при чтении ADODB.Stream в двоичном режиме возвращается закодированный "безопасный" массив, который неплохо бы раскодировать в "нормальные байты" перед подачей на подписание - иначе выйдет подпись совсем не того, что было в исходном файле (так как представление в оперативной памяти разное). Здесь на форуме был пример для 1С как это сделать, на VBS выполняется аналогично.


Так делать можно, по крайней мере с CAPICOM.DLL, но от него пришлось отказаться так как он не работает на 1Сх64, на х32 все нормально подписывается и штамп времени вообще указывать не нужно.
Если я указываю ВходныеДанные = "какаяТаСтрока"; результат тот же от этого ошибка не исчезает.

Тогда вопрос как мне узнать какой штамп времени я могу использовать вместо тестового? Или как я могу узнать где взять нужный мне?

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

Вам действительно необходимо создавать подпись со штампом времени?

Если да, то обратитесь в удостоверяющий центр с вопросом какую службу штампов времени Вам использовать при создании подписи.
Техническую поддержку оказываем тут
Наша база знаний
Offline two_oceans  
#6 Оставлено : 25 марта 2020 г. 13:23:57(UTC)
two_oceans

Статус: Эксперт

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

Сказал(а) «Спасибо»: 62 раз
Поблагодарили: 219 раз в 206 постах
Действительно наиболее правильно узнать у УЦ. Не знаю подойдут ли, но процитирую список из соседней темы, который сохранил
Цитата:
А попробуйте с этим адресом: http://service.itk23.ru/tsp/tsp.srf .
Данный адрес обрабатывает запросы как от ГОСТ 2001, так и от ГОСТ 2012.
Только учтите, что сейчас в ответе TSP - с ГОСТ-2001
Цитата:
По состоянию на 22/11/2019
2012:
http://qs.cryptopro.ru/tsp/tsp.srf адрес штампа времени КриптоПРО
http://tax4.tensor.ru/tsp/tsp.srf адрес штампа времени Тензор
2001:
http://pki.skbkontur.ru/tsp/tsp.srf адрес штампа времени СКБ Контур
http://pki.sertum-pro.ru/tsp/tsp.srf адрес штампа времени Сертум-Про
http://tsp.ncarf.ru/tsp/tsp.srf адрес штампа времени НУЦ
http://tsp.taxcom.ru/tsp/tsp.srf адрес штампа времени Таском
http://ocsp.ntssoft.ru/tsp/tsp.srf адрес штампа времени НТСсофт
Цитата:
Наши боевые tsp смотрите на странице http://q.cryptopro.ru/

Отредактировано пользователем 25 марта 2020 г. 13:24:31(UTC)  | Причина: Не указана

RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.