Статус: Новичок
Группы: Участники
Зарегистрирован: 28.11.2019(UTC) Сообщений: 8
Сказал(а) «Спасибо»: 1 раз
|
Добрый день! Очень нуждаюсь в помощи!) Необходимо отправлять xml файлы подписанные по правилам: Цитата:Формат подписи: XMLDSig detached url: http://www.w3.org/2000/09/xmldsigРасчет хэш-сумм: ГОСТ Р 34.11-2012 url: urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34112012-256 Формирования подписи: ГОСТ Р 34.10-2012 url: urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34102012-gostr34112012-256 Каноникализация: Exclusive XML Canonicalization от 18 July 2002 url: http://www.w3.org/2001/10/xml-exc-c14n#Дополнительная трансформация (для XMLDSig): Нормализация СМЭВ url: urn://smev-gov-ru/xmldsig/transform - Установили криптопро csp 4 на linux. - Получили папку в формате .000 и импортировали ее получив контейнер. - Нам прислали файл в формате .cer и тоже его импортировали в контейнер. - У нас есть xml файлы с данными без каких либо подписей и кэш. Через командную строку подписал файл, но формат совершенно иной получаю, не соответствует xmldsig Цитата:csptestf -sfsign -sign -add -in insert.xml -out insert.xml.sign -my email@email.ru какое ПО нужно или какой командой можно подпись сделать или надо самим софт писать ? Какие следующие шаги ? Начинаю читать документацию и там на 5 лет можно пропасть, одна терминология и ничего не понятно. Мы используем php на сервере Отредактировано пользователем 28 ноября 2019 г. 14:17:17(UTC)
| Причина: Не указана
|
|
|
|
Статус: Сотрудник
Группы: Администраторы
Зарегистрирован: 12.12.2007(UTC) Сообщений: 6,377 Откуда: КРИПТО-ПРО Сказал «Спасибо»: 32 раз Поблагодарили: 706 раз в 614 постах
|
Самый простой способ сделать xmldsig на linux - использовать DSS Lite: https://www.cryptopro.ru/products/dss-liteМы в течение года выпустим библиотеку для XAdES, а пока можно использовать xmlsec\libxml2\mscrypto - работает с некоторыми исправлениями. Или на Java (JCSP\Java CSP) |
|
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 28.11.2019(UTC) Сообщений: 8
Сказал(а) «Спасибо»: 1 раз
|
Автор: Максим Коллегин Самый простой способ сделать xmldsig на linux - использовать DSS Lite: https://www.cryptopro.ru/products/dss-liteМы в течение года выпустим библиотеку для XAdES, а пока можно использовать xmlsec\libxml2\mscrypto - работает с некоторыми исправлениями. Или на Java (JCSP\Java CSP) Спасибо! Но DSS Lite это решение как я понял для браузерной веб версии. А мы должны подписывать в бекенде и отправлять запросы, пользователей с браузером у нас нет) Правильно ли я понял, что необходимо самому писать на java формирование и подпись xml ? Если да то у меня несколько вопросов: - Как я понял нужно использовать СМЭВ 3, я нашел примеры в блоге КриптоПро https://www.cryptopro.ru...olzovaniem-kriptopro-jcpСтатья в нашем случае уже не актуальна, где можно найти пример реализации ? - Где взять: закрытый ключ, открытый ключ, x509 сертификат кто должен прислать или мы должны сами его создать через open ssl ? ничерта не понятно Извините за глупость, но столько теории и документации, что начать не понятно с чего.
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 12,718 Сказал «Спасибо»: 500 раз Поблагодарили: 2053 раз в 1593 постах
|
Автор: gradus - Где взять: закрытый ключ, открытый ключ, x509 сертификат кто должен прислать или мы должны сами его создать через open ssl ? ничерта не понятно
Извините за глупость, но столько теории и документации, что начать не понятно с чего. Здравствуйте. Начните с этого раздела: https://www.cryptopro.ru/category/faq/linuxunix-0Ключи\сертификаты - можете сами сформировать для тестов. Можно через браузер с плагином, в тестовом УЦ КРИПТО-ПРО. Потом - в боевых условиях потребуется получить сертификат в аккредитованном УЦ. |
|
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 28.11.2019(UTC) Сообщений: 8
Сказал(а) «Спасибо»: 1 раз
|
Автор: Андрей Писарев Автор: gradus - Где взять: закрытый ключ, открытый ключ, x509 сертификат кто должен прислать или мы должны сами его создать через open ssl ? ничерта не понятно
Извините за глупость, но столько теории и документации, что начать не понятно с чего. Здравствуйте. Начните с этого раздела: https://www.cryptopro.ru/category/faq/linuxunix-0Ключи\сертификаты - можете сами сформировать для тестов. Можно через браузер с плагином, в тестовом УЦ КРИПТО-ПРО. Потом - в боевых условиях потребуется получить сертификат в аккредитованном УЦ. Мне и так прислали два.сертификата, один с содержанием моей организации и второй ГОСТ2012.cer И еще какие-то сертификаты надо получить ? Я нашел статью https://habr.com/ru/company/alfa/blog/350158/ и скрипт https://github.com/VBurm...er/SmevTransformSpi.javaНо скрипт просто проводит валидацию xml для дальнейшей подписи, верно ? В статье приведены только куски кода для подписи, полноценного примера нет. Можно ли не быть гиком java, не знать наизусть документацию всех продуктов крипто про и просто найти пример подставив свои значения и получить подписанный xml ? Сори за сарказм, просто голова лопается от количества документации и отсутствия простых человеческих решений. p.s. Я готов заплатить за помощь, мне здоровье важнее. Отредактировано пользователем 3 декабря 2019 г. 22:56:42(UTC)
| Причина: Не указана
|
|
|
|
Статус: Эксперт
Группы: Участники
Зарегистрирован: 05.03.2015(UTC) Сообщений: 1,602 Откуда: Иркутская область Сказал(а) «Спасибо»: 110 раз Поблагодарили: 394 раз в 366 постах
|
Как я Вас понимаю, но гиком все равно быть придется. Не обязательно гиком именно Джавы (есть еще варианты с Си++/Си#, с openssl - там поддержки еще меньше, но многие пилили обмен с ГИС ЖКХ через openssl), но нет единого решения, все городят "костыли" под себя. Все статьи, которые упомянуты дельные, но имеют общий недостаток - устаревание со временем. Время идет и статья 2012 года теперь в основном как ориентир как же все таки подписывать, по смэв 3 статья тоже вроде без последних веяний (гост-2012). До кучи порекомендую еще посмотреть портал СМЭВ 3 https://smev3.gosuslugi.ru там есть адаптер Джава. Он рассматривался в статье да, но статья не обновляется, а адаптер обновляется. Это не совсем готовое решение, но есть "от чего плясать".
|
1 пользователь поблагодарил two_oceans за этот пост.
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 28.11.2019(UTC) Сообщений: 8
Сказал(а) «Спасибо»: 1 раз
|
Автор: two_oceans Как я Вас понимаю, но гиком все равно быть придется. Не обязательно гиком именно Джавы (есть еще варианты с Си++/Си#, с openssl - там поддержки еще меньше, но многие пилили обмен с ГИС ЖКХ через openssl), но нет единого решения, все городят "костыли" под себя. Все статьи, которые упомянуты дельные, но имеют общий недостаток - устаревание со временем. Время идет и статья 2012 года теперь в основном как ориентир как же все таки подписывать, по смэв 3 статья тоже вроде без последних веяний (гост-2012). До кучи порекомендую еще посмотреть портал СМЭВ 3 https://smev3.gosuslugi.ru там есть адаптер Джава. Он рассматривался в статье да, но статья не обновляется, а адаптер обновляется. Это не совсем готовое решение, но есть "от чего плясать". Спасибо!) Оххх сложно будет, с учетом, что времени осталось до конца года) Потом отрубят старый гост Вот вроде то что мне нужно https://www.cryptopro.ru...aspx?g=posts&t=17263Не подкажите как на linux через командную строку скомпилировать файлы ? (я на сервер разворачиваю там нет возможности ставить ide) я создал файл test.java рядом папку lib закинул туда все из каталога /opt/cryptopro-jcp-2.0/dependencies Запускаю так Код:javac -cp "lib/*" test.java
сам код: Код:
import dynamic.xades.*;
public class test{
public static void main(final String[] arguments) throws Exception {
String path = "XML/evacuation_insert.xml";
Init.init();
Security.addProvider(new JCP());
System.setProperty("org.apache.xml.security.ignoreLineBreaks", "true");
System.setProperty("org.apache.xml.security.resource.config", "resource/jcp.xml");
FileKeyingDataProvider dp = new FileKeyingDataProvider();
dp.setAlias("myalias");
XADESSigner signer = new XADESSigner() ;
signer.setSecurityProvider("JCP");
signer.setKeyingDataProvider(dp);
signer.setSignedElementId("signed-data-container");
signer.init();
byte[] encoded = Files.readAllBytes(Paths.get(path));
InputStream bStream = new ByteArrayInputStream(encoded);
SOAPMessage request = MessageFactory.newInstance().createMessage(null, bStream);
SOAPBody body = request.getSOAPBody();
signer.sign(request, null);
String tmpDoc = toString(request.getSOAPPart());
System.out.println("doccc: " + tmpDoc);
}
}
получаю ошибку test.java:7: error: cannot find symbol Init.init(); ^ и т.п. Отредактировано пользователем 12 декабря 2019 г. 15:44:21(UTC)
| Причина: Не указана
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 30.06.2016(UTC) Сообщений: 3,390 Сказал «Спасибо»: 53 раз Поблагодарили: 778 раз в 720 постах
|
|
|
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 28.11.2019(UTC) Сообщений: 8
Сказал(а) «Спасибо»: 1 раз
|
Забыл отписаться) разобрался в java, крипто и пришлось самому с 0 все писат т.к. все примеры не актуальны ь + сделал связь, что бы через php подписывать xml. Всем спасибо, было не просто)
|
|
|
|
Статус: Сотрудник
Группы: Администраторы, Участники Зарегистрирован: 16.04.2008(UTC) Сообщений: 1,272
Сказал(а) «Спасибо»: 22 раз Поблагодарили: 446 раз в 325 постах
|
|
|
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close