The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



"openssl проверить ГОСТ подпись."
Вариант для распечатки  
Пред. тема | След. тема 
Форум Программирование под UNIX (Разное)
Изначальное сообщение [ Отслеживать ]

"openssl проверить ГОСТ подпись."  +/
Сообщение от kot_k_k (ok), 02-Май-19, 14:21 
Добрый день (извините если не туда).
Ест XML и его подпись в бинарном формате (ГОСТовская).

перерыл кучу всего никак не могу проверить валидность подписи и этого xml.

вот так получил подпись в PEM:
openssl pkcs7 -inform DER -outform PEM -in c1.bin -out c1.pem

файл вот такого формата
-----BEGIN PKCS7-----
MIIaWAYJKoZIhvcNAQcCoIIaSTCCGkUCAQExDDAKBgYqhQMCAgkFADALBgkqhkiG
........
Et8zFAMIHR1AGZWK9+dSgUdQZhtbw9/6zkDqGg==
-----END PKCS7-----


из нее вытащил сертификат:
openssl pkcs7 -print_certs -in c1.pem -out c1.cer

формат файла вот такого вида:

subject=emailAddress = ...........
issuer=emailAddress = ...........
-----BEGIN CERTIFICATE-----
MIIHTDCCBvugAwIBAgIKMvG12QAAAAABhDAIBgYqhQMCAgMwggFKMR4wHAYJKoZI
.................
zVOySmH5/HRjkWIh5NIN6JrcNqf0I0bhOKpilRDnWpycwbO0ElQ6baLtZyzphVzz
-----END CERTIFICATE-----

subject=street = .......
issuer=emailAddress = .......
-----BEGIN CERTIFICATE-----
MIIOODCCDeegAwIBAgIRAOkZuenyQBag6BFvjoo4D0UwCAYGKoUDAgIDMIIBhzEi
..........
BroqlhydyBtkneXpe17WYrwrgqIOYovMLpxzZJicDkwz3a5dPqdZrrCXjeY=
-----END CERTIFICATE-----

из сертификата получил публичный ключ:
openssl x509 -pubkey -noout -in c1.cer > c1_pub.pem

вроде все правильно ключ имеет вид
-----BEGIN PUBLIC KEY-----
MGMwHAYGKoUDAgITMBIGByqFAwICIwEGByqFAwICHgEDQwAEQMbwzX/8iDw7NXqB
..............
0QT32M0=
-----END PUBLIC KEY-----

осталось проверить вот этой командой - в которой публичный ключ, подпись и файл
openssl dgst -engine gost -verify c1_pub.pem -signature c1.bin c1.xml

но результат
engine "gost" set.
Verification Failure
1


пытался другими командами проверить
например так
openssl smime -verify -in c1.bin -noverify -inform der -content c1.xml
но просто выводит на экран xml

без -engine gost
openssl dgst -verify c1_pub.pem -signature c1.bin c1.xml

просто пишет
Verification Failure
1

ощущение что я или что-то не так делаю или не доделываю какой-то этап.


Ответить | Правка | Cообщить модератору

Оглавление

Сообщения [Сортировка по времени | RSS]


1. "openssl проверить ГОСТ подпись."  +/
Сообщение от СинОптик (?), 02-Май-19, 20:55 
Проверь ни эта ли бага - https://habr.com/ru/post/450024/
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

4. "openssl проверить ГОСТ подпись."  +/
Сообщение от kot_k_k (ok), 05-Май-19, 10:07 
> Проверь ни эта ли бага - https://habr.com/ru/post/450024/

из статьи
Для вычисления хэш-значений использовались утилиты следующего вида:

1) openssl

$ openssl dgst [–md_gost12_256|-md_gost12_512] <file

у меня выдает ошибку

# openssl dgst –md_gost12_256 c1.xml
–md_gost12_256: No such file or directory
SHA256(c1.xml)= ab1a93888b15545d9cb5f3e74490fd8a3011b48f7b1c01ff93a99c37d5ff09cf

получается он не знает о –md_gost12_256 ? блин


Ответить | Правка | ^ к родителю #1 | Наверх | Cообщить модератору

5. "openssl проверить ГОСТ подпись."  +/
Сообщение от kot_k_k (ok), 05-Май-19, 10:17 
>> Проверь ни эта ли бага - https://habr.com/ru/post/450024/
> из статьи
> Для вычисления хэш-значений использовались утилиты следующего вида:
> 1) openssl
> $ openssl dgst [–md_gost12_256|-md_gost12_512] <file
> у меня выдает ошибку
> # openssl dgst –md_gost12_256 c1.xml
> –md_gost12_256: No such file or directory
> SHA256(c1.xml)= ab1a93888b15545d9cb5f3e74490fd8a3011b48f7b1c01ff93a99c37d5ff09cf
> получается он не знает о –md_gost12_256 ? блин

аааа. только сейчас (после публикации заметил) заметил что в статье –md_gost12_256  длинный пробел.

пойдем дальше по статье

Ответить | Правка | ^ к родителю #4 | Наверх | Cообщить модератору

7. "openssl проверить ГОСТ подпись."  +/
Сообщение от Александр (??), 07-Окт-19, 09:00 
Получилось проверить подпись? Если да, то как?
Ответить | Правка | ^ к родителю #5 | Наверх | Cообщить модератору

8. "openssl проверить ГОСТ подпись."  +/
Сообщение от Александр (??), 08-Окт-19, 09:00 
> Получилось проверить подпись? Если да, то как?

в общем у меня сработала следующая конструкция, может кому пригодиться:

openssl smime -verify -CAfile c_root.crt -no_check_time -in contract.pdf.1.sig -inform der -content contract.pdf -out /dev/null


если нужно что бы проверялось не истек ли срок годности сертификатов в цепочке, но нужно убрать ключ -no_check_time

если нужно проверить только подпись, и не проверять сертификаты, то заменить ключи "-CAfile c_root.crt -no_check_time" на "-noverify"


что интересно, если заменить команду "smime" на "cms", то выдает ошибку:
139968788635712:error:2E09A09E:CMS routines:CMS_SignerInfo_verify_content:verification failure:crypto/cms/cms_sd.c:819:
139968788635712:error:2E09D06D:CMS routines:CMS_verify:content verify error:crypto/cms/cms_smime.c:393:


openssl version:
OpenSSL 1.1.0l  10 Sep 2019 (Library: OpenSSL 1.1.0g  2 Nov 2017)

Ответить | Правка | ^ к родителю #7 | Наверх | Cообщить модератору

2. "openssl проверить ГОСТ подпись."  +/
Сообщение от Вася (??), 03-Май-19, 13:33 
Покажи вывод

openssl ciphers | tr ":" "\n" | grep GOST

должно быть
GOST2012-GOST8912-GOST8912
GOST2001-GOST89-GOST89

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

3. "openssl проверить ГОСТ подпись."  +/
Сообщение от kot_k_k (ok), 03-Май-19, 14:49 
> Покажи вывод
> openssl ciphers | tr ":" "\n" | grep GOST
> должно быть
> GOST2012-GOST8912-GOST8912
> GOST2001-GOST89-GOST89

именно это и выводит букавка в циферку

Ответить | Правка | ^ к родителю #2 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру