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

Уведомление

Icon
Error

2 Страницы12>
Опции
К последнему сообщению К первому непрочитанному
Offline MAD911  
#1 Оставлено : 31 мая 2019 г. 10:22:45(UTC)
MAD911

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

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

Поблагодарили: 1 раз в 1 постах
Здравствуйте, возникла проблема с подписью данных из JCSP для системы "Честный знак"(https://ismp.crpt.ru/login-kep). Для авторизации необходимо подписать блок данных и отправить их post запросом.
Исходя из запросов в браузере плагин крипто про кроме подписи самих данных добавляет еще туда информацию.
Не могли бы вы подсказать, какую информацию он еще туда дописывает и как в JCSP повторить алгоритм подписи плагина, т.к. обычная подпись закрытым ключем выдает сильно меньше данных.

Код:
Signature signer = Signature.getInstance(
                    JCP.GOST_EL_SIGN_NAME,
                    JCSP.PROVIDER_NAME
            );
signer.initSign(privateKey);
signer.update(data);
new Encoder().encode(signer.sign());


Заранее благодарю!

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

Offline what_is_it@inbox.ru  
#2 Оставлено : 31 мая 2019 г. 11:48:41(UTC)
what_is_it@inbox.ru

Статус: Активный участник

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

Сказал(а) «Спасибо»: 13 раз
Поблагодарили: 4 раз в 2 постах
Вы можете найти эту информацию с помощью браузера

UserPostedImage

Ведь на каждом сайте состав атрибутов в подписи может быть своим.
Offline MAD911  
#3 Оставлено : 31 мая 2019 г. 11:55:52(UTC)
MAD911

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

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

Поблагодарили: 1 раз в 1 постах
Большое спасибо!
Offline Евгений Афанасьев  
#4 Оставлено : 31 мая 2019 г. 12:32:42(UTC)
Евгений Афанасьев

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

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

Сказал(а) «Спасибо»: 13 раз
Поблагодарили: 381 раз в 377 постах
Здравствуйте.
Создаваемая вами с помощью Signature подпись - plain, голая, а должна быть CAdES с добавлением сертификата подписи.
Техническую поддержку оказываем тут
Наша база знаний
Offline MAD911  
#5 Оставлено : 31 мая 2019 г. 13:03:34(UTC)
MAD911

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

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

Поблагодарили: 1 раз в 1 постах
Благодарю, а не могли бы Вы пожалуйста дать ссылку на пример создания такой подписи?
Offline Евгений Афанасьев  
#6 Оставлено : 31 мая 2019 г. 13:45:35(UTC)
Евгений Афанасьев

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

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

Сказал(а) «Спасибо»: 13 раз
Поблагодарили: 381 раз в 377 постах
Описание есть в заголовке конструктора CAdESSignature в javadoc/CAdES-javadoc.jar в дистрибутиве + метод setCertStore для добавления сертификатов в подпись (по умолчанию они не добавятся), принимает список с X509CertificateHolder. Примеры в пакете CAdES в samples-sources.jar из дистрибутива (Sign*Example.java).
Техническую поддержку оказываем тут
Наша база знаний
Offline MAD911  
#7 Оставлено : 31 мая 2019 г. 16:34:17(UTC)
MAD911

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

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

Поблагодарили: 1 раз в 1 постах
Спасибо. понял) Извините. что опять отвлекаю.
Пример нашел, но почему-то при инициализации CAdESSignature вылетает exception.
В идеи создал даже отдельный проект, там просто инициализация этого класса и все равно.
Класс CMSAttributeTableGenerator виден в функции main. В classpath при запуске bcprov-jdk15on-1.50.jar и bcpkix-jdk15on-1.50.jar доступны. Не могли бы ВЫ подсказать в чем причина?

Exception in thread "main" java.lang.NoClassDefFoundError: org/bouncycastle/cms/CMSAttributeTableGenerator
at test2.main(test2.java:11)
Caused by: java.lang.ClassNotFoundException: org.bouncycastle.cms.CMSAttributeTableGenerator
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
... 1 more

Код:
public static void main(String[] args) {
        System.setProperty("com.sun.security.enableCRLDP", "true");
        System.setProperty("com.ibm.security.enableCRLDP", "true");

        try {
            CAdESSignature signature = new CAdESSignature(false);
        } catch (CAdESException e) {
            e.printStackTrace();
        }
    }
Offline Евгений Афанасьев  
#8 Оставлено : 31 мая 2019 г. 16:38:53(UTC)
Евгений Афанасьев

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

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

Сказал(а) «Спасибо»: 13 раз
Поблагодарили: 381 раз в 377 постах
Автор: MAD911 Перейти к цитате
ClassNotFoundException: org.bouncycastle.cms.CMSAttributeTableGenerator

Полагаю, все-таки библиотеки не подключены.
Возможно, cades.jar у вас в lib/ext, и bc - отдельно.

Отредактировано пользователем 31 мая 2019 г. 16:39:26(UTC)  | Причина: Не указана

Техническую поддержку оказываем тут
Наша база знаний
Offline MAD911  
#9 Оставлено : 5 июня 2019 г. 11:21:53(UTC)
MAD911

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

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

Поблагодарили: 1 раз в 1 постах
Здравствуйте, не подскажите, а плагин подписывает только подписью CAdES_BES или еще и CAdES_X_Long_Type_1 ?
Offline basid  
#10 Оставлено : 5 июня 2019 г. 12:02:44(UTC)
basid

Статус: Активный участник

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

Сказал(а) «Спасибо»: 5 раз
Поблагодарили: 92 раз в 84 постах
Зачем смотреть информацию, если всегда можно задать очередной вопрос?..
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)
Сообщений: 2,699
Российская Федерация
Откуда: Крипто-Про

Сказал(а) «Спасибо»: 13 раз
Поблагодарили: 381 раз в 377 постах
Здравствуйте.
Автор: 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)
Сообщений: 2,699
Российская Федерация
Откуда: Крипто-Про

Сказал(а) «Спасибо»: 13 раз
Поблагодарили: 381 раз в 377 постах
Другими средствами подпись проверяется? В плагине или 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)
Сообщений: 534
Российская Федерация
Откуда: Иркутская область

Сказал(а) «Спасибо»: 30 раз
Поблагодарили: 118 раз в 113 постах
Уж извините что встреваю, если что я не сотрудник КриптоПро.
Ближе к теме, по обсуждению у меня впечатление, что если сертификатом одного УЦ подписание прошло как надо, что дело может быть в представлении самого сертификата. Возможно в сам сертификат или в 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)
Сообщений: 2,699
Российская Федерация
Откуда: Крипто-Про

Сказал(а) «Спасибо»: 13 раз
Поблагодарили: 381 раз в 377 постах
Автор: 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 Лента
Пользователи, просматривающие эту тему
2 Страницы12>
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.