Статус: Участник
Группы: Участники
Зарегистрирован: 26.09.2014(UTC) Сообщений: 20 Сказал «Спасибо»: 2 раз Поблагодарили: 4 раз в 4 постах
|
Удалось создавать и проверять свои подписи. Подписать файл: Код:$ /opt/cprocsp/bin/amd64/csptestf -keyset -sign GOST -in data.xml -out data.xml.sig -password 1234567890 -container RaUser-60002963-592a-4e32-96c8-8e7304f7b424 -keytype exchange -expcert cert.pem
Где, data.xml - сообщение, которое нужно подписать, data.xml.sig - подпись, которая будет создана для сообщения, cert.pem - сертификат, который будет экспортирован. Для проверки подписи используется следующая команда: Код:$ /opt/cprocsp/bin/amd64/csptestf -keyset -verify GOST -in data.xml -signature data.xml.sig -certificate cert.pem -keytype exchange -verifycontext
При работе со СМЭВ, требуется всегда побайтно переворачивать подпись. Если делаем подпись, то сначала делаем подпись, потом ее переворачиваем, дальше в base64 и вставляем в XML. При проверке порядок действий обратный: Извлекаем подпись, декодируем из base64 в бинарную строку, побайтно переворачиваем и запускаем команду проверки. Сертификат у меня хранится в бинарном виде. Отредактировано пользователем 3 октября 2014 г. 17:02:13(UTC)
| Причина: Найдено решение.
|
1 пользователь поблагодарил komex за этот пост.
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 20.10.2014(UTC) Сообщений: 16 Откуда: Москва Сказал(а) «Спасибо»: 3 раз
|
Здравствуйте!
Корректный пример для переворачивания подписи по байтам есть (на php)?
Обязательно ли указывать при подписании -expcert cert.pem? У меня работает без.
Спасибо! Очень жду ответов!!!
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 26.09.2014(UTC) Сообщений: 20 Сказал «Спасибо»: 2 раз Поблагодарили: 4 раз в 4 постах
|
Автор: Mishanki Здравствуйте!
Корректный пример для переворачивания подписи по байтам есть (на php)?
Обязательно ли указывать при подписании -expcert cert.pem? У меня работает без.
Спасибо! Очень жду ответов!!! Здравсвуйте. Для переворачивания подписи использую функцию strrev. Т.е. берется из сообщения строка в формате base64 и переворачивается так: Код:
$str = 'тут строка в формате base64';
$sign = strrev(base64_decode($str));
Добавлять ключ " -expcert cert.pem" не обязательно. Она просто экспортирует сертификат, который нужно добавлять в ответном сообщении. Его можно заранее извлечь один раз, и не создавать каждый раз при подписи.
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 20.10.2014(UTC) Сообщений: 16 Откуда: Москва Сказал(а) «Спасибо»: 3 раз
|
Изначально мне казалось, что переварачиваем именно подпись, а потом уже кодируем в b64 перевернутую подписиь. Или мы сначала подписываем, кодируем в b64, а потом переворачиваем? Какой вариант правильный?
Нужно ли блок SignInfo перед подписыванием преобразовывать в hash по ГОСТ Р 34.11-94, а после подписывать по ГОСТ Р 34.10-2001 или мы сразу подписываем?
Есть ли пример реализации канонизации в c14n на php?
С п а с и б о !
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 26.09.2014(UTC) Сообщений: 20 Сказал «Спасибо»: 2 раз Поблагодарили: 4 раз в 4 постах
|
Автор: Mishanki Изначально мне казалось, что переварачиваем именно подпись, а потом уже кодируем в b64 перевернутую подписиь. Или мы сначала подписываем, кодируем в b64, а потом переворачиваем? Какой вариант правильный?
При проверке подписи сначала декодируем, потом переворачиваем и проверяем. Для подписи делаем все наоборот: подписываем, переворачиваем, кодируем в base64. Автор: Mishanki Нужно ли блок SignInfo перед подписыванием преобразовывать в hash по ГОСТ Р 34.11-94, а после подписывать по ГОСТ Р 34.10-2001 или мы сразу подписываем? Криптопро сам все делает, дополнительно хэшировать не нужно - только канонизированный блок отдать на подпись. Автор: Mishanki Есть ли пример реализации канонизации в c14n на php? Да, для этого используется метод C14N класса DOMNode. А вообще, есть библиотека XMLSecurity, которая сама проверяет все подписи и хэши. Вот только нужно ее расширять, что бы получить поддержку ГОСТ.
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 20.10.2014(UTC) Сообщений: 16 Откуда: Москва Сказал(а) «Спасибо»: 3 раз
|
С14N настроил. Работает. Только не знаю корректно ли. Сохраняются ли ds: в блоке? Есть ли пример блока SignInfo прошедшего канонизацию?
<ds:SignedInfo> <ds:CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/> <ds:SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#gostr34102001-gostr3411"/> <ds:Reference URI="#id-20"> <ds:Transforms> <ds:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/> </ds:Transforms> <ds:DigestMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#gostr3411"/> <ds:DigestValue>kLELYYPd38yHnns/LNr41cSC6Toci3IIwbOqw5SHtho=</ds:DigestValue> </ds:Reference> </ds:SignedInfo>
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 26.09.2014(UTC) Сообщений: 20 Сказал «Спасибо»: 2 раз Поблагодарили: 4 раз в 4 постах
|
Автор: Mishanki С14N настроил. Работает. Только не знаю корректно ли. Сохраняются ли ds: в блоке? Есть ли пример блока SignInfo прошедшего канонизацию?
<ds:SignedInfo> <ds:CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/> <ds:SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#gostr34102001-gostr3411"/> <ds:Reference URI="#id-20"> <ds:Transforms> <ds:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/> </ds:Transforms> <ds:DigestMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#gostr3411"/> <ds:DigestValue>kLELYYPd38yHnns/LNr41cSC6Toci3IIwbOqw5SHtho=</ds:DigestValue> </ds:Reference> </ds:SignedInfo>
Я прогнал через C14N и результат получился следующий: Код:<SignedInfo>
<CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"></CanonicalizationMethod>
<SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#gostr34102001-gostr3411"></SignatureMethod>
<Reference URI="#id-20">
<Transforms>
<Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"></Transform>
</Transforms>
<DigestMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#gostr3411"></DigestMethod>
<DigestValue>kLELYYPd38yHnns/LNr41cSC6Toci3IIwbOqw5SHtho=</DigestValue>
</Reference>
</SignedInfo>
Правда при этом php ругался, что не знает префикса ds (ведь XML не полный). Если покажете исходный XML, сделаю из него правильный SignedInfo для проверки.
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 20.10.2014(UTC) Сообщений: 16 Откуда: Москва Сказал(а) «Спасибо»: 3 раз
|
Попробуем разобратся. Все еще не могу пройти проверку ЭП на сервере СМЭВ.
Весь алгортим: Канонизирую весь xml. Беру блок Body, пишу в файл, делаю хеш, достаю хеш (без всяких переворотов строки), кодирую в base64 и вставляю в DigestValue. Проверка hash: Обработка тестовой строки: $str = 'Проверка' возвращает результат в b64: wahup7a1pam125HxOxg67T8FMblT9l7iPE6WFFHZn2Y=
Далее... Вновь канонизируем весь xml. Беру блок SignInfo, пишу в файл, подписываю, переворачиваю, кодирую в base64, вношу результат в SignatureValue.
Отправка и ошибка ЭП.
Где искать ошибку? Прошу помощи.
Код канонизации: $x = xml, $tag = 'Body' или 'SignInfo' function getC14N($tag, $x){
$xml = new DOMDocument("1.0", "ISO-8859-15"); $xml->loadXML($x);
$node = $xml->getElementsByTagName($tag); for($c = 0; $c<$node->length; $c++){ $n = $node->item($c)->C14N(); }
return $n; }
Спасибо!
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 26.09.2014(UTC) Сообщений: 20 Сказал «Спасибо»: 2 раз Поблагодарили: 4 раз в 4 постах
|
Вот пример рабочего запроса СМЭВ:
Код:<?xml version="1.0" encoding="UTF-8"?><s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/" xmlns:u="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"><s:Header><wsse:Security xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" s:actor="http://smev.gosuslugi.ru/actors/smev"><wsse:BinarySecurityToken xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" EncodingType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#Base64Binary" ValueType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-x509-token-profile-1.0#X509v3" wsu:Id="CertId-ADF131469F961D262F13637850453371540" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">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</wsse:BinarySecurityToken><ds:Signature xmlns:ds="http://www.w3.org/2000/09/xmldsig#" Id="Signature-585">
<ds:SignedInfo>
<ds:CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
<ds:SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#gostr34102001-gostr3411"/>
<ds:Reference URI="#_2">
<ds:Transforms>
<ds:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
</ds:Transforms>
<ds:DigestMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#gostr3411"/>
<ds:DigestValue>0vjsWlQdkGJeylHmt690oo7JJKmzZV8qF6CAvtVYFX0=</ds:DigestValue>
</ds:Reference>
</ds:SignedInfo>
<ds:SignatureValue>
CBQfiwJ3ZAF27cBexgrqIkybJ2KPLbVIBN7ecUmtXBsraBvHZdBRBKiMyEELxE3rjffItds3E1EI
cDWgpRSBJw==
</ds:SignatureValue>
<ds:KeyInfo Id="KeyId-ADF131469F961D262F13637850453371541">
<wsse:SecurityTokenReference xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" wsu:Id="STRId-ADF131469F961D262F13637850453371542" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd"><wsse:Reference URI="#CertId-ADF131469F961D262F13637850453371540" ValueType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-x509-token-profile-1.0#X509v3" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd"/></wsse:SecurityTokenReference>
</ds:KeyInfo>
</ds:Signature></wsse:Security></s:Header><s:Body u:Id="_2"><dkRequest xmlns="http://ec.minregion.ru/">
<Message xmlns="http://smev.gosuslugi.ru/rev120315">
<Sender>
<Code>KIS001781</Code>
<Name>КИС СПб</Name>
</Sender>
<Recipient>
<Code>VCKP</Code>
<Name>ВЦКП</Name>
</Recipient>
<Originator>
<Code>KIS001781</Code>
<Name>КИС СПб</Name>
</Originator>
<TypeCode>GSRV</TypeCode>
<Status>REQUEST</Status>
<Date>2012-08-30T11:31:58.791371+04:00</Date>
</Message>
<MessageData xmlns="http://smev.gosuslugi.ru/rev120315">
<AppDocument>
<RequestCode>req_cc154cfc-18f4-47ad-8a17-59965f61c451</RequestCode>
<BinaryData>UEsDBBQAAAAIAP1bHkG2ySO68gAAAFQBAAAsACQAcmVxX2NjMTU0Y2ZjLTE4ZjQtNDdhZC04YTE3LTU5OTY1ZjYxYzQ1MS54bWwKACAAAAAAAAEAGAAsQPaJgYbNASxA9omBhs0BLED2iYGGzQGFkE1OwzAQhfdI3MHyvp40bKByXKkLxKJs6IZt5A6ppcShtkPKLSoQIFGBQByAA7DgCnMTroBJo2xZPM3P+0YavZ+vbzndVCW7QedNbTM+FglnaHW9NLbIeBOuRsd8qg4P5AWuG/SBRdz6ycabjK9CuJ4AtG0r2iNRuwLSJBnD5fl8oVdY5SNjfcitRj5cLf+/6uEBRC0qYx0W8UHhGuDxG8bkvNZ5acKtoid6oF3UC73SfdQbvdOzhAHo8EVwiEFF+y4CW3qM+JY+GX3QTkjo7Q49qxuPKj2RsO+65awx5V8mDPbzaZkHlUroaowH+nzUL1BLAQItABQAAAAIAP1bHkG2ySO68gAAAFQBAAAsACQAAAAAAAAAAAAAAAAAAAByZXFfY2MxNTRjZmMtMThmNC00N2FkLThhMTctNTk5NjVmNjFjNDUxLnhtbAoAIAAAAAAAAQAYACxA9omBhs0BLED2iYGGzQEsQPaJgYbNAVBLBQYAAAAAAQABAH4AAABgAQAAAAA=</BinaryData>
</AppDocument>
</MessageData>
</dkRequest></s:Body></s:Envelope>
В данном примере только один блок Security и подписывает он Body. Делается это так. Создается блок wsse:Security и добавляется в s:Header. Дальше в него добавляется публичный сертификат через блок wsse:BinarySecurityToken. Следом создается блок ds:Signature, в который добавляется ds:KeyInfo со ссылкой на этот сертификат. Потом в ds:Signature добавляем ds:SignedInfo. В нем CanonicalizationMethod и SignatureMethod всегда одинаковые. Reference указывает на блок, который подписываем: тут подписывается только Body (ID="_2"). Дальше берется весь кусок s:Body, трансформируется и высчитывается его hash, кладется в b64 в DigestValue. Следющим шагом берется ds:SignedInfo, канинизируется (трансформируется) и делается его подпись. Она переворачивается и кладется в b64 в ds:SignatureValue. Писал по памяти, мог ошибиться. Вообще, этот алгоритм описан в документации СМЭВ. Кроме того, делать все эти XML руками очень сложно и велика вероятность ошибки (даже один лишний пробел может испортить запрос). Если есть возможность, пробуйте использовать готовые компоненты (давал ссылку выше).
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 20.10.2014(UTC) Сообщений: 16 Откуда: Москва Сказал(а) «Спасибо»: 3 раз
|
|
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close