Статус: Новичок
Группы: Участники
Зарегистрирован: 16.09.2014(UTC) Сообщений: 2  Сказал(а) «Спасибо»: 1 раз
|
Добрый день. Имеется сертификат, полученный в тестовом центре сертификации Крипто-Про. Создаю отсоединеную УЭЦП в 1С 8.2. Код обработки:
Код:
&НаКлиенте
Процедура Подписать(Команда)
Signer = Новый COMОбъект("CAdESCOM.CPSigner");
Certificate = НайтиСертификат("ФИО", "почта");
Если Certificate = Неопределено Тогда
Сообщить("Сертификат не найден");
КонецЕсли;
Signer.Certificate = Certificate;
Signer.TSAAddress = "http://cryptopro.ru/tsp/tsp.srf";
Signer.Options = 0;
bDetached = true;
ИмяФайла = "D:\Гарписьмо.pdf";
ИмяФайлаЭЦП = "D:\Гарписьмо.pdf.sig";
ПодписатьФайл(ИмяФайла, ИмяФайлаЭЦП, bDetached, Signer);
ПроверитьЭЦП(ИмяФайла, ИмяФайлаЭЦП, bDetached);
КонецПроцедуры
&НаКлиенте
Функция НайтиСертификат(CN, E)
Store = Новый COMОбъект("CAPICOM.Store");
StoreName = "MY";
StoreLocation = 2;
Store.Open(StoreLocation, StoreName);
Для каждого Certificate Из Store.Certificates Цикл
Если (Найти(Certificate.SubjectName, "CN=" + CN) > 0)
И (Найти(Certificate.SubjectName, "E=" + E) > 0) Тогда
Возврат Certificate;
КонецЕсли;
КонецЦикла;
Возврат Неопределено;
КонецФункции
&НаКлиенте
Процедура ПодписатьФайл(ИмяФайла, ИмяФайлаЭЦП, bDetached, Signer)
SignedData = Новый COMОбъект("CAdESCOM.CadesSignedData");
ВходнойФайл = Новый Файл(ИмяФайла);
ДвоичныеДанные = Новый ДвоичныеДанные(ВходнойФайл.ПолноеИмя);
CADESCOM_BASE64_TO_BINARY = 1;
SignedData.ContentEncoding = CADESCOM_BASE64_TO_BINARY;
Строка64=Base64Строка(ДвоичныеДанные);
SignedData.Content = Строка64;
Результат = SignedData.Sign(Signer, bDetached, 0);
ДвоичныеДанные = Base64Значение(Результат);
ДвоичныеДанные.Записать(ИмяФайлаЭЦП);
КонецПроцедуры
&НаКлиенте
Функция ПроверитьЭЦП(ИмяФайла, ИмяФайлаЭЦП, bDetached)
Попытка
SignedData = Новый COMОбъект("CAdESCOM.CadesSignedData");
CADESCOM_BASE64_TO_BINARY = 1;
SignedData.ContentEncoding = CADESCOM_BASE64_TO_BINARY;
ВходнойФайл = Новый Файл(ИмяФайла);
ДвоичныеДанные = Новый ДвоичныеДанные(ВходнойФайл.ПолноеИмя);
SignedData.Content = Base64Строка(ДвоичныеДанные);
ФайлЭЦП = Новый Файл(ИмяФайлаЭЦП);
ДвоичныеДанные = Новый ДвоичныеДанные(ФайлЭЦП.ПолноеИмя);
SignedMessage = Base64Строка(ДвоичныеДанные);
SignedData.VerifyCades(SignedMessage, , bDetached);
Возврат Истина;
Исключение
Сообщить("Ошибка при проверке подписи. Ошибка: " + ОписаниеОшибки());
Возврат Ложь;
КонецПопытки;
КонецФункции
Созданная подпись нормально проходит проверку: - в обработке (VerifyCades);
Но на сайте Госуслуги https://www.gosuslugi.ru/pgu/eds/ получаем ошибку: "Не найден сертификат подписи. Подлинность документа НЕ ПОДТВЕРЖДЕНА". Грешил на сертификат, но если создать ЭЦП через КриптоАРМ, то проверка на Госуслугах возвращает правильный статус сертификата: "Сертификат был выдан не аккредитованным УЦ/не доверенным УЦ". Можно ли добиться проверки ЭЦП, созданной с использованием CAdESCOM, на сайте Госуслуги? Отредактировано пользователем 18 сентября 2014 г. 14:31:34(UTC)
| Причина: Не указана Вложение(я):  Гарписьмо.pdf.zip (64kb) загружен 9 раз(а).У Вас нет прав для просмотра или загрузки вложений. Попробуйте зарегистрироваться.
|
|
|
|
|
|
Статус: Сотрудник
Группы: Администраторы, Участники Зарегистрирован: 10.12.2008(UTC) Сообщений: 945  Откуда: Крипто-Про Поблагодарили: 116 раз в 105 постах
|
Скорее всего, сайт Госуслуги не умеет находить сертификат ключа подписи в неподписанном атрибуте certificate values, а ищет его только в коллекции Certificates.
Чтобы при помощи CAdESCOM получить подпись, в которой сертификат будет находиться не только в неподписанном атрибуте certificate values, а также и в коллекции Certificates, вы можете создать подпись формата CAdES-BES, а потом дополнить ее до CAdES-X Long Type 1.
|
 1 пользователь поблагодарил Новожилова Елена за этот пост.
|
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 16.09.2014(UTC) Сообщений: 2  Сказал(а) «Спасибо»: 1 раз
|
|
|
|
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 14.06.2016(UTC) Сообщений: 2  Откуда: Москва
|
Автор: Новожилова Елена  Скорее всего, сайт Госуслуги не умеет находить сертификат ключа подписи в неподписанном атрибуте certificate values, а ищет его только в коллекции Certificates.
Чтобы при помощи CAdESCOM получить подпись, в которой сертификат будет находиться не только в неподписанном атрибуте certificate values, а также и в коллекции Certificates, вы можете создать подпись формата CAdES-BES, а потом дополнить ее до CAdES-X Long Type 1. Что нужно сделать чтобы при подписании файла при помощи КриптоАрм или Такском (на выходе нужен файл sig), не было ошибки "Не найден сертификат подписи. Подлинность документа НЕ ПОДТВЕРЖДЕНА"? Есть какая то пошаговая стратегия без перевыпуска ключа?
|
|
|
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close