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

Уведомление

Icon
Error

3 Страницы<123>
Опции
К последнему сообщению К первому непрочитанному
Offline MAD911  
#11 Оставлено : 6 июня 2019 г. 13:01:48(UTC)
MAD911

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

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

Поблагодарили: 1 раз в 1 постах
Здравствуйте, спасибо за ссылку, по ней я понял какой алгоритм подписи используется :). Извиняюсь, что все достаю вопросами, но глобально проблему пока так и не решил -
результат подписи через https://www.cryptopro.ru...e/cades_bes_sample.html, отличается от результата через JCSP.

Не могли бы вы подсказать, что я делаю не так, или что я забыл добавить. Заранее благодарю.

Ключ формата GOST_EL_DH_NAME = "GOST3410DHEL";
Из атрибутов задаю только подписываемый атрибут CMSAttributes.signingTime

Код:
CAdESSignature cadesSignature = new CAdESSignature(false);
cadesSignature.setCertificateStore(config.getCertificateStore());
cadesSignature.setCRLStore(config.getCRLStore());
// Создаем подписанта CAdES-BES.
cadesSignature.addSigner(config.getProviderName(),
                         config.getDigestOid(),
                         config.getPublicKeyOid(),
                         config.getPrivateKey(),
                         config.getChain(),
                         CAdESType.CAdES_BES,
                         null,
                         false,
                         config.getSignedAttributes(),
                         config.getUnsignedAttributes(),
                         config.getCRLs());
 
OutputStream outSignatureStream = new ByteArrayOutputStream();

cadesSignature.open(outSignatureStream);
 
//поток для подписываемых данных
InputStream dataStream = new ByteArrayInputStream(data);

//sign
final int buffer_size = 1024*1024;
byte[] buffer = new byte[buffer_size];
int read;

while ( (read = dataStream.read(buffer, 0, buffer_size)) > 0 ) {
    cadesSignature.update(buffer, 0, read);
}

// Завершаем создание подписи
cadesSignature.close();
dataStream.close();
outSignatureStream.close();

Offline MERCY  
#12 Оставлено : 6 июня 2019 г. 19:38:23(UTC)
MERCY

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

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

Приветствую, MAD911.


Маемся-бодаемся примерно с тойже проблемой - не понятно только в пределах того же проекта ЦРПТ или какого-то другого.
У нас засада с маркировкой и ЭЦП в ней. Из того что получилось прояснить на текущий момент.


Мы изначально пытались подписывать с помощью программы cryptcp из пакета CSP. Это не работает, притом результаты очень сильно похожи на Ваши.


Суть такова - при подписывании с помощью cryptcp ЭЦП CADES BES программа cryptcp формирует ЭЦП с добавлением только личного сертификата в ЭЦП (головные и промежуточные сертификаты не добавляются). Сервера ЦРПТ такой результат не хотят принимать.

Рабочим оказался результат с тестового сервера КриптоПро, но при этом ЭЦП, как оказалось из общения с поддержкой Крипто-ПРО, формируется с полной цепочкой сертификатов (личный, промежуточный УЦ, головной УЦ). Такая ЭЦП CADES BES серверами ЦРПТ принимается.


Прелесть ситуации состоит в следующем - поддержка КРИПТО-ПРО говорит, что править программу cryptcp они не будут, при этом порекомендовали установить головные и промежуточные сертификаты на сервера ЦРПТ (ЦРПТ это за 5 месяцев так и не сделали, и есть вопросы - а помогло бы это???). Второе что порекомендовала поддержка КРИПТО-ПРО - попросить ЦРПТ сделать поддержку CADES XLongType 1 у ЦРПТ. ЦРПТ опять же сказали что они эту поддержку делать не будут.



Вывод - КРИПТО-ПРО пеняет на ЦРПТ, ЦРПТ пеняет на КРИПТО-ПРО. Ещё нам в ЦРПТ предложили пободаться с JCP, но глядя а это Ваше сообщение что-то мне подсказывает, что и это не будет работать :-(
Offline Евгений Афанасьев  
#13 Оставлено : 10 июня 2019 г. 9:45:59(UTC)
Евгений Афанасьев

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

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

Сказал(а) «Спасибо»: 20 раз
Поблагодарили: 685 раз в 646 постах
Здравствуйте.
Автор: MAD911 Перейти к цитате
результат подписи через https://www.cryptopro.ru...e/cades_bes_sample.html, отличается от результата через JCSP

Вероятно, в подпись нужно добавить сертификат подписи - setCertificateStore со списком из X509CertificateHolder перед addSigner.

Offline MAD911  
#14 Оставлено : 10 июня 2019 г. 9:51:45(UTC)
MAD911

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

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

Поблагодарили: 1 раз в 1 постах
Здравствуйте, так и делаю, вторая строчка примера кода, в моей сообщении.
Offline Евгений Афанасьев  
#15 Оставлено : 11 июня 2019 г. 17:15:00(UTC)
Евгений Афанасьев

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

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

Сказал(а) «Спасибо»: 20 раз
Поблагодарили: 685 раз в 646 постах
Другими средствами подпись проверяется? В плагине или csptest?
Offline MERCY  
#16 Оставлено : 12 июня 2019 г. 18:50:54(UTC)
MERCY

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

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

Сдаётся мне что мы имеем ситуацию когда серверный софт и API компании Крипто-ПРО на сайте ЦРПТ не хочет принимать сгенерированные софтом и API компании же Крипто-ПРО ЭЦП клиентским софтом подписи в силу различия алгоритмов работы софта на генерацию ЭЦП и на её верификацию (в случае отправки ЭЦП генерируетс с личным сертификатом, в случае верификации ЭЦП проверяется с полной цепочкой).

Мне вот интересно - почему проектная группа ЦРПТ не могла полностью предоставить готовый клиентско-серверный софт и готовые высокоуровневые API с назначением по аналогии с JCP и JSCP...
А то сдаётся мне - ребята даже не попробовали отправить ЭЦП...

Да и у самого крипто-про всё не слава богу. По документации на раз-два три ничего не работает. Документация реально кривоватая даже в плане необходимых пакетов для JCP (по отладчику приходится доставлять пакеты, о которых ничего нет в документации, так же не понятно зачем файл WebContent\resources\crypto.properties , если настройки вручную приходится писать в коде), пакеты между собой конфликтуют...

Ребята, сделайте нормальную документацию по которой пример CAdES.SignExample можно выполнить от начала и до конца для всех дистрибутивов... И протестируйте эту документацию несколько раз на чистом компе...

А то приходится админам SAP, 1С и т.п. развлекаться с отладчиком кода Java...

Так-то, конечно классно!.. Много нового для себя открываем! Но вот до основной работы руки доходят только ночью в выходные и праздники...

Отредактировано пользователем 12 июня 2019 г. 21:11:19(UTC)  | Причина: Не указана

Offline MERCY  
#17 Оставлено : 12 июня 2019 г. 21:03:07(UTC)
MERCY

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

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

Крипто-ПРО хотелось бы спросить - вы, же наверное вкурсе что к 2024 году через ЦРПТ, серверный софт которого работает на КРИПТО-ПРО весь бизнес, с клиентским софтом, опять же на КРИПТО-ПРО, хотят заставить маркировать все продаваемые изделия.

Нет - не вкурсе?

Отредактировано пользователем 12 июня 2019 г. 21:03:51(UTC)  | Причина: Не указана

Offline two_oceans  
#18 Оставлено : 13 июня 2019 г. 5:34:33(UTC)
two_oceans

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

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

Сказал(а) «Спасибо»: 110 раз
Поблагодарили: 393 раз в 366 постах
Уж извините что встреваю, если что я не сотрудник КриптоПро.
Ближе к теме, по обсуждению у меня впечатление, что если сертификатом одного УЦ подписание прошло как надо, что дело может быть в представлении самого сертификата. Возможно в сам сертификат или в certificateStore были упакованы сертификаты из всей цепочки (есть разные форматы контейнеров сертификатов, в некоторые можно включить всю цепочку) и включение сертификата захватило всю цепочку. Если так, то достаточно будет обработать другие сертификаты в такое же представление.

Отредактировано пользователем 13 июня 2019 г. 5:52:12(UTC)  | Причина: Не указана

Offline MERCY  
#19 Оставлено : 13 июня 2019 г. 6:29:21(UTC)
MERCY

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

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

С тестового сайта Крипто-ПРО всё варианты ЭЦП (подписанных и тестовыми ключами и сертификатами тестовых УЦ КРИПТО-ПРО и боевыми, имеющимися в распоряжении фирмы) работают и принимаются сайтом ЦРПТ. При генерации ЭЦП при помощи cryptcp ни одного варианта не работает (сертификаты и ключи используем те же самые что и для подписывание на тестовом сайте использовали). Да и поддержка КРИПТО-ПРО подтвердила различия ЭЦП с использованием тестового сайта и с использованием cryptcp. И утилиту «чинить» отказались. Фича не баг, конечно, - это всё понятно!

Чувствую, так и придётся писать гибкий вариант утилит и высокоуровневых API...
Offline Евгений Афанасьев  
#20 Оставлено : 13 июня 2019 г. 12:46:21(UTC)
Евгений Афанасьев

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

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

Сказал(а) «Спасибо»: 20 раз
Поблагодарили: 685 раз в 646 постах
Автор: MERCY Перейти к цитате

Суть такова - при подписывании с помощью cryptcp ЭЦП CADES BES программа cryptcp формирует ЭЦП с добавлением только личного сертификата в ЭЦП (головные и промежуточные сертификаты не добавляются). Сервера ЦРПТ такой результат не хотят принимать.
Рабочим оказался результат с тестового сервера КриптоПро, но при этом ЭЦП, как оказалось из общения с поддержкой Крипто-ПРО, формируется с полной цепочкой сертификатов (личный, промежуточный УЦ, головной УЦ). Такая ЭЦП CADES BES серверами ЦРПТ принимается.
Прелесть ситуации состоит в следующем - поддержка КРИПТО-ПРО говорит, что править программу cryptcp они не будут, при этом порекомендовали установить головные и промежуточные сертификаты на сервера ЦРПТ (ЦРПТ это за 5 месяцев так и не сделали, и есть вопросы - а помогло бы это???). Второе что порекомендовала поддержка КРИПТО-ПРО - попросить ЦРПТ сделать поддержку CADES XLongType 1 у ЦРПТ. ЦРПТ опять же сказали что они эту поддержку делать не будут.
Вывод - КРИПТО-ПРО пеняет на ЦРПТ, ЦРПТ пеняет на КРИПТО-ПРО. Ещё нам в ЦРПТ предложили пободаться с JCP, но глядя а это Ваше сообщение что-то мне подсказывает, что и это не будет работать :-(

Промежуточные и корневые сертификаты действительно должны быть установлены там, где производится проверка.
В CAdES.jar сделали доработку, чтобы можно было с помощью addSigner добавить в подпись всю цепочку подписанта на этапе формирования подписи, в следующей версии будет доступна (добавится еще один параметр в addSigner, который будет вызывать setCertificateStore для построенной цепочки).

thanks 1 пользователь поблагодарил Евгений Афанасьев за этот пост.
two_oceans оставлено 14.06.2019(UTC)
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
3 Страницы<123>
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.