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

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline vorh  
#1 Оставлено : 18 мая 2017 г. 17:41:36(UTC)
vorh

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

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

Сказал(а) «Спасибо»: 4 раз
Всем доброго дня возникла проблема с извлечением сертификата из подписи :

Создаю подпись для документа odt
Код:

var CADES_BES = 1;
oSignedData.Content= b64encoded;
oSigner.Options = 1; //CAPICOM_CERTIFICATE_INCLUDE_WHOLE_CHAIN
signature = oSignedData.SignCades(oSigner, CADES_BES,true);


Проверяю с помощью

Код:
 var oSignedData = cadesplugin.CreateObject("CAdESCOM.CadesSignedData");
     oSignedData.ContentEncoding = 1;
     oSignedData.Content = b64encoded;
     oSignedData.VerifyCades(signature, 1, true);


Проверка проходит без ошибок

И отправляю на сервер где с помощью java пытаюсь извлечь сертификат

Код:
signature = Base64.getMimeDecoder().decode(sign);
  CertificateFactory cf = CertificateFactory.getInstance("X.509");
  ByteArrayInputStream bais = new ByteArrayInputStream(signature);
  Iterator<? extends Certificate> i = cf.generateCertificates(bais).iterator(); // тут ошибка
  X509Certificate cert = (X509Certificate) i.next();


Трейс ошибки:
Код:
java.security.cert.CertificateException: java.io.IOException: Incomplete BER/DER data
	at sun.security.provider.X509Factory.engineGenerateCertificates(X509Factory.java:358)
	at java.security.cert.CertificateFactory.generateCertificates(CertificateFactory.java:462)


Пытался достать просто сертификат из хранилища и вызвать у него метод

Код:
 value = cert.Export();

UPD: Отправлял его на сервер и с помощью кода выше пытался сгенерировать сертифкат - результат то же самое

То же самое не может - вытащить нужный сертификат
Указывал разные oSigner.Option для генерации подписи
Менял способы кодирование и декодирования base64

Можете подсказать что я делаю не так ?

Отредактировано пользователем 18 мая 2017 г. 17:44:30(UTC)  | Причина: Не указана

Offline Евгений Афанасьев  
#2 Оставлено : 18 мая 2017 г. 17:57:47(UTC)
Евгений Афанасьев

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

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

Сказал(а) «Спасибо»: 20 раз
Поблагодарили: 691 раз в 652 постах
Здравствуйте.
Автор: vorh Перейти к цитате

И отправляю на сервер где с помощью java пытаюсь извлечь сертификат

Код:
signature = Base64.getMimeDecoder().decode(sign);
  CertificateFactory cf = CertificateFactory.getInstance("X.509");
  ByteArrayInputStream bais = new ByteArrayInputStream(signature);
  Iterator<? extends Certificate> i = cf.generateCertificates(bais).iterator(); // тут ошибка
  X509Certificate cert = (X509Certificate) i.next();


Трейс ошибки:
Код:
java.security.cert.CertificateException: java.io.IOException: Incomplete BER/DER data
	at sun.security.provider.X509Factory.engineGenerateCertificates(X509Factory.java:358)
	at java.security.cert.CertificateFactory.generateCertificates(CertificateFactory.java:462)


sign - это подпись? Если да, то вы ее фактически пытаетесь открыть, как сертификат: sign -> signature -> bais -> i. Если не подпись, то сохраните в файл, попробуйте декодировать asn1 декодировщиком.
Вообще, подпись можно декодировать либо низкоуровневыми asn1-функциями (см. архив samples-sources.jar), либо с помощью CAdES API (модули AdES-core.jar и CAdES.jar, документация и примеры в javadoc/CAdES-javadoc.jar).

thanks 1 пользователь поблагодарил Евгений Афанасьев за этот пост.
vorh оставлено 18.05.2017(UTC)
Offline vorh  
#3 Оставлено : 18 мая 2017 г. 18:11:28(UTC)
vorh

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

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

Сказал(а) «Спасибо»: 4 раз
Благодарю за быстрый ответ , сейчас попробую это сделать, а что то по поводу извлечение сертификата можете подсказать ?
Как корректно это сделать или указать на руководство где про это можно почитать

UPD: JCP и TLS увы не стоит и нету возможности его поставить
По ошибке увидев тег Java решил создать тему тут - мои вопросы скорее отностся к разделу плагина браузера

Собственно как можно с помощью плагина извлечь сертификат и передать на сервер ?

Отредактировано пользователем 18 мая 2017 г. 18:36:17(UTC)  | Причина: Не указана

Offline Евгений Афанасьев  
#4 Оставлено : 19 мая 2017 г. 9:48:32(UTC)
Евгений Афанасьев

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

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

Сказал(а) «Спасибо»: 20 раз
Поблагодарили: 691 раз в 652 постах
Автор: vorh Перейти к цитате
JCP и TLS увы не стоит и нету возможности его поставить

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