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

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline gradus  
#1 Оставлено : 28 ноября 2019 г. 14:11:07(UTC)
gradus

Статус: Новичок

Группы: Участники
Зарегистрирован: 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)  | Причина: Не указана

Offline Максим Коллегин  
#2 Оставлено : 2 декабря 2019 г. 7:03:31(UTC)
Максим Коллегин

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

Группы: Администраторы
Зарегистрирован: 12.12.2007(UTC)
Сообщений: 6,374
Мужчина
Откуда: КРИПТО-ПРО

Сказал «Спасибо»: 32 раз
Поблагодарили: 704 раз в 613 постах
Самый простой способ сделать xmldsig на linux - использовать DSS Lite: https://www.cryptopro.ru/products/dss-lite
Мы в течение года выпустим библиотеку для XAdES, а пока можно использовать xmlsec\libxml2\mscrypto - работает с некоторыми исправлениями. Или на Java (JCSP\Java CSP)
Знания в базе знаний, поддержка в техподдержке
Offline gradus  
#3 Оставлено : 3 декабря 2019 г. 19:40:00(UTC)
gradus

Статус: Новичок

Группы: Участники
Зарегистрирован: 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 ? ничерта не понятно

Извините за глупость, но столько теории и документации, что начать не понятно с чего.
Offline Андрей Писарев  
#4 Оставлено : 3 декабря 2019 г. 21:41:38(UTC)
Андрей *

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

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

Сказал «Спасибо»: 494 раз
Поблагодарили: 2034 раз в 1578 постах
Автор: gradus Перейти к цитате

- Где взять: закрытый ключ, открытый ключ, x509 сертификат кто должен прислать или мы должны сами его создать через open ssl ? ничерта не понятно

Извините за глупость, но столько теории и документации, что начать не понятно с чего.


Здравствуйте.

Начните с этого раздела:
https://www.cryptopro.ru/category/faq/linuxunix-0



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

Потом - в боевых условиях потребуется получить сертификат в аккредитованном УЦ.

Техническую поддержку оказываем тут
Наша база знаний
Offline gradus  
#5 Оставлено : 3 декабря 2019 г. 22:52:06(UTC)
gradus

Статус: Новичок

Группы: Участники
Зарегистрирован: 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)  | Причина: Не указана

Offline two_oceans  
#6 Оставлено : 4 декабря 2019 г. 5:08:09(UTC)
two_oceans

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

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

Сказал(а) «Спасибо»: 110 раз
Поблагодарили: 393 раз в 366 постах
Как я Вас понимаю, но гиком все равно быть придется. Не обязательно гиком именно Джавы (есть еще варианты с Си++/Си#, с openssl - там поддержки еще меньше, но многие пилили обмен с ГИС ЖКХ через openssl), но нет единого решения, все городят "костыли" под себя. Все статьи, которые упомянуты дельные, но имеют общий недостаток - устаревание со временем. Время идет и статья 2012 года теперь в основном как ориентир как же все таки подписывать, по смэв 3 статья тоже вроде без последних веяний (гост-2012). До кучи порекомендую еще посмотреть портал СМЭВ 3 https://smev3.gosuslugi.ru там есть адаптер Джава. Он рассматривался в статье да, но статья не обновляется, а адаптер обновляется. Это не совсем готовое решение, но есть "от чего плясать".
thanks 1 пользователь поблагодарил two_oceans за этот пост.
Андрей * оставлено 04.12.2019(UTC)
Offline gradus  
#7 Оставлено : 5 декабря 2019 г. 20:57:51(UTC)
gradus

Статус: Новичок

Группы: Участники
Зарегистрирован: 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)  | Причина: Не указана

Offline Александр Лавник  
#8 Оставлено : 12 декабря 2019 г. 18:21:43(UTC)
Александр Лавник

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

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

Сказал «Спасибо»: 53 раз
Поблагодарили: 773 раз в 715 постах
Здравствуйте.

Для Java 10 и выше используйте КриптоПро JCP 2.0 с литерой A без установки.

Для Java ниже 10 необходима установка КриптоПро JCP 2.0 без литеры A вместе с модулем cades.

Вопросы по использованию КриптоПро JCP лучше задавать в соответствующей ветке форума.
Техническую поддержку оказываем тут
Наша база знаний
Offline gradus  
#9 Оставлено : 22 января 2020 г. 22:25:51(UTC)
gradus

Статус: Новичок

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

Сказал(а) «Спасибо»: 1 раз
Забыл отписаться) разобрался в java, крипто и пришлось самому с 0 все писат т.к. все примеры не актуальны ь + сделал связь, что бы через php подписывать xml.
Всем спасибо, было не просто)
Offline Андрей Русев  
#10 Оставлено : 8 апреля 2021 г. 10:23:31(UTC)
Русев Андрей

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

Группы: Администраторы, Участники
Зарегистрирован: 16.04.2008(UTC)
Сообщений: 1,260

Сказал(а) «Спасибо»: 21 раз
Поблагодарили: 442 раз в 322 постах
Библиотека xades для Linux/macOS появилась начиная с релиза 2.0.14071:
https://www.cryptopro.ru/products/cades/downloads
https://docs.cryptopro.r...ades-signature/xadessign
Официальная техподдержка. Официальная база знаний.
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.