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

Уведомление

Icon
Error

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

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

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

Добрый день!

Путь, по которому я пытаюсь пройти:

Установка:
tar -xzf linux-amd64.tgz
cd linux-amd64
sudo ./install.sh
Версия самая свежая из ныне доступных (40r4)

Добавление корневых сертификатов (под root) из файла http://cpca.cryptopro.ru/cacer.p7b:
sudo certmgr -inst -all -store uroot -file cacer.p7b

Добавление сертификата пользователя:
cp /path/from/some/folder/User.cer /path/to/local/storage/User.cer
Добавляю сертификат с привязкой к закрытому ключу и возможностью подписывать документы
Закрытый ключ состоит из шести key-файлов:
header.key
masks2.key
masks.key
name.key
primary2.key
primary.key
В итоге всех манипуляций проверяю командой certmgr --list и вижу Private Link: Yes » т.е. сертификат и приватный ключ установлены в системе корректно.

Нам нужно подписать условный /path/to/xml/file.xml:
Код:
<?xml version="1.0" encoding="utf-8"?>
<case xmlns:mig="http://umms.fms.gov.ru/replication/migration" xmlns:core="http://umms.fms.gov.ru/replication/core"
      xmlns:ic="http://umms.fms.gov.ru/application/invitation"
      xmlns="http://umms.fms.gov.ru/application/invitation/electronic/issuance" schemaVersion="1.0">
    <core:uid>1554599</core:uid>
    <foo/>
    <bar/>
</case>

Первым делом я формирую хэш командой:
Код:
/opt/cprocsp/bin/amd64/cryptcp -hash -dir /path/to/hash/ -hashAlg 1.2.643.2.2.9 /path/to/xml/file.xml

Вопросы:

хэш формируется на основе исходного файла без изменений оного?
нужно ли перед хэшированием приводить файл к какому-то виду? тут намёк на Canonicalization
Затем собираю структуру:
Код:
<Signature
	xmlns="http://www.w3.org/2000/09/xmldsig#">
	<SignedInfo>
		<CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315" />
		<SignatureMethod Algorithm="urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34102001-gostr3411" />
		<Reference URI="">
			<Transforms>
				<Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature" />
			</Transforms>
			<DigestMethod Algorithm="urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr3411" />
			<DigestValue>сюда пишу значение [в base64], полученное на шаге №6</DigestValue>
		</Reference>
	</SignedInfo>
	<SignatureValue>   ...   </SignatureValue>
	<KeyInfo>
		<X509Data>
			<X509Certificate>   сюда пишу значение открытого ключа сертификата с шага /path/to/local/storage/User.cer   </X509Certificate>
		</X509Data>
	</KeyInfo>
</Signature>


Делаю Canonicalization для тега <SignedInfo> и записываю эту строку в файл /path/to/xml/SignedInfo.xml.sig
Код:
/opt/cprocsp/bin/amd64/cryptcp -sign -uMy -dn "user@domain.ru" -hashAlg 1.2.643.2.2.9 -pin 123456 -nochain /path/to/xml/SignedInfo.xml.sig /path/to/sig/file.xml.sig

Полученное на предыдущем шаге значение пишу в тег <SignatureValue>.

Отдельно отмечу, что само по себе полученное значение в файле SignedInfo.xml.sig отлично валидируется в сервисе https://dss.cryptopro.ru/Verify/Verify/ (в прочем как и консольными командами).

В итоге собранный xml файл не проходит валидацию на сервисе https://dss.cryptopro.ru/Verify/Verify/
Перепробовал различные варианты сборки xml, ничего не помогает.

Нужна помощь с пошаговым алгоритмом действий, возможно какие-то неправильные действия совершаю на некоторых шагах.
Где-то пишут про необходимость какое-то значение в base64 перегнать, где-то пишут, что надо делать Canonicalization не только для SignatureValue, а для всего файла, где-то пишут, что надо какую-то строку перевернуть (сделать revert).

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

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