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

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline profim  
#1 Оставлено : 16 августа 2017 г. 12:06:09(UTC)
profim

Статус: Участник

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

Подписываю данные - строка "Message"
var sSignedMessage = oSignedData.SignCades(oSigner, CADESCOM_CADES_BES);
сертификатом сгенерированным тестовым УЦ КриптоПро

oSignedData.VerifyCades(sSignedMessage, CADESCOM_CADES_BES);
готоврит все ок

Необходимо проверить подпись на сервере при помощи openssl. Поддержка ГОСТ включена.
(Сервер работает с УЦ посылая запросы на генерацию нормально)

1. Выгружаю сертификат в DER
2. openssl x509 -inform DER -outform PEM -text -in alex.cer -out alex.pem
3. openssl x509 -pubkey -noout -in alex.pem > alex_pub.pem
4. openssl dgst -engine gost -verify alex_pub.pem -signature sign.txt data.txt
engine "gost" set.
Verification Failure

в data.txt - Message
в sign.txt - sSignedMessage

что делаю не так?
Offline Андрей Писарев  
#2 Оставлено : 16 августа 2017 г. 13:04:29(UTC)
Андрей *

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

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

Сказал «Спасибо»: 385 раз
Поблагодарили: 1563 раз в 1203 постах
2 вопроса:
1. что делает dgst
2. что на выходе от SignCades

Техническую поддержку оказываем тут
Наша база знаний
Offline profim  
#3 Оставлено : 16 августа 2017 г. 13:06:53(UTC)
profim

Статус: Участник

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

Автор: Андрей * Перейти к цитате
2 вопроса:
1. что делает dgst

The digest functions generate and verify digital signatures using message digests.
очевидно проверяет подпись

2. что на выходе от SignCades

MIIFlQYJKoZIhvcNAQcCoIIFhjCCBYICAQExDDAKBgYqhQMCAgkFADALBgkqhkiG9w0BBwGgggMO
MIIDCjCCArmgAwIBAgITEgAfZXrxMw0FjyXXBQAAAB9lejAIBgYqhQMCAgMwfzEjMCEGCSqGSIb3
DQEJARYUc3VwcG9ydEBjcnlwdG9wcm8ucnUxCzAJBgNVBAYTAlJVMQ8wDQYDVQQHEwZNb3Njb3cx
FzAVBgNVBAoTDkNSWVBUTy1QUk8gTExDMSEwHwYDVQQDExhDUllQVE8tUFJPIFRlc3QgQ2VudGVy
IDIwHhcNMTcwODE1MTQ0NDMwWhcNMTcxMTE1MTQ1NDMwWjAZMRcwFQYDVQQDDA7QkNC70LXQutGB
0LXQuTBjMBwGBiqFAwICEzASBgcqhQMCAiMBBgcqhQMCAh4BA0MABEAZy9sHTuJuhhSxlGhYoPU2
feVozeOn/ndBDSfemljI2HUjQtwvm+ZPQEJvls3gP79P4X39IppCqw3QL93yDZIbo4IBcDCCAWww
DgYDVR0PAQH/BAQDAgbAMBMGA1UdJQQMMAoGCCsGAQUFBwMCMB0GA1UdDgQWBBTlE/0h7Zm+bfDj
OkgtouWTMdTQpjAfBgNVHSMEGDAWgBQVMXywjRreZtcVnElSlxckuQF6gzBZBgNVHR8EUjBQME6g
TKBKhkhodHRwOi8vdGVzdGNhLmNyeXB0b3Byby5ydS9DZXJ0RW5yb2xsL0NSWVBUTy1QUk8lMjBU
ZXN0JTIwQ2VudGVyJTIwMi5jcmwwgakGCCsGAQUFBwEBBIGcMIGZMGEGCCsGAQUFBzAChlVodHRw
Oi8vdGVzdGNhLmNyeXB0b3Byby5ydS9DZXJ0RW5yb2xsL3Rlc3QtY2EtMjAxNF9DUllQVE8tUFJP
JTIwVGVzdCUyMENlbnRlciUyMDIuY3J0MDQGCCsGAQUFBzABhihodHRwOi8vdGVzdGNhLmNyeXB0
b3Byby5ydS9vY3NwL29jc3Auc3JmMAgGBiqFAwICAwNBAFPC9V/UXrRpJIsk0H+tE0Jh8DjDcMqe
OhBIPjuleNvurMy9SuCOGyVdC4QhHfvN7U7JBz+6jqQAbk8EfM+8FPkxggJOMIICSgIBATCBljB/
MSMwIQYJKoZIhvcNAQkBFhRzdXBwb3J0QGNyeXB0b3Byby5ydTELMAkGA1UEBhMCUlUxDzANBgNV
BAcTBk1vc2NvdzEXMBUGA1UEChMOQ1JZUFRPLVBSTyBMTEMxITAfBgNVBAMTGENSWVBUTy1QUk8g
VGVzdCBDZW50ZXIgMgITEgAfZXrxMw0FjyXXBQAAAB9lejAKBgYqhQMCAgkFAKCCAVAwGAYJKoZI
hvcNAQkDMQsGCSqGSIb3DQEHATAcBgkqhkiG9w0BCQUxDxcNMTcwODE2MDg1NTQ0WjAvBgkqhkiG
9w0BCQQxIgQggeKL8u6r/M9gk8eUtsd+aE82xP4ROa3C9Uelh5Jo+8YwgeQGCyqGSIb3DQEJEAIv
MYHUMIHRMIHOMIHLMAgGBiqFAwICCQQg7cDwHlHUU0Y7K/MDpo6TF2d0nSgXM0LW4m7BVS2IP5kw
gZwwgYSkgYEwfzEjMCEGCSqGSIb3DQEJARYUc3VwcG9ydEBjcnlwdG9wcm8ucnUxCzAJBgNVBAYT
AlJVMQ8wDQYDVQQHEwZNb3Njb3cxFzAVBgNVBAoTDkNSWVBUTy1QUk8gTExDMSEwHwYDVQQDExhD
UllQVE8tUFJPIFRlc3QgQ2VudGVyIDICExIAH2V68TMNBY8l1wUAAAAfZXowCgYGKoUDAgITBQAE
QLwEvFlRqn3CKg3BwhVNOR0KSBZ21dCu26r8T8jmQpexv/9fOvnRcK1eeEasa9AZhxIlljpHf4tD
3tsKBJC7YNA=



Offline Андрей Писарев  
#4 Оставлено : 16 августа 2017 г. 13:23:15(UTC)
Андрей *

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

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

Сказал «Спасибо»: 385 раз
Поблагодарили: 1563 раз в 1203 постах
Цитата:
using message digests.


Вопросы
3. digests и CMS (от SignCades) это одно и тоже? (или digests есть в составе CMS)
4. digests в каком формате ждет openssl?
Техническую поддержку оказываем тут
Наша база знаний
Offline Андрей Писарев  
#5 Оставлено : 16 августа 2017 г. 13:45:19(UTC)
Андрей *

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

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

Сказал «Спасибо»: 385 раз
Поблагодарили: 1563 раз в 1203 постах
Техническую поддержку оказываем тут
Наша база знаний
Offline profim  
#6 Оставлено : 16 августа 2017 г. 14:04:52(UTC)
profim

Статус: Участник

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

Автор: Андрей * Перейти к цитате


направление верное задали - спасибо.
надо действительно проверять бинарный вариант.
вот команда:
openssl cms -verify -binary -in sign.bin -inform DER -CAfile CA.pem -certfile alex.pem -nodetach -out out.txt

но получаю:
140046768047768:error:2E099064:CMS routines:CMS_SIGNERINFO_VERIFY_CERT:certificate verify error:cms_smime.c:287:Verify error:unsupported certificate purpose

это на CAfile ругается:
openssl x509 -in CA.pem -noout -purpose
Certificate purposes:
SSL client : Yes
SSL client CA : Yes
SSL server : Yes
SSL server CA : Yes
Netscape SSL server : No
Netscape SSL server CA : Yes
S/MIME signing : Yes
S/MIME signing CA : Yes
S/MIME encryption : No
S/MIME encryption CA : Yes
CRL signing : Yes
CRL signing CA : Yes
Any Purpose : Yes
Any Purpose CA : Yes
OCSP helper : Yes
OCSP helper CA : Yes
Time Stamp signing : No
Time Stamp signing CA : Yes

это корневой серт тестового УЦ
Offline profim  
#7 Оставлено : 16 августа 2017 г. 14:38:31(UTC)
profim

Статус: Участник

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

Вопрос закрыт. С сертификатами реального УЦ все срабатывает как надо.
Offline Vo.Oki  
#8 Оставлено : 24 июня 2021 г. 9:43:41(UTC)
Vo.Oki

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

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

Решил не открывать новую тему а продолжить здесь, т.к актуален контекст.
Разрабатываем приложение на Ruby on Rails, задача: дать клиентам возможность подписывать документы с ЭЦП и проверять их на стороне сервера на валидность включая проверку цепочки сертификатов.

Соответственно т.к у нас RoR то работаем мы не с чем-то консольным или готовой либой а с OpenSSL.

На входе у меня есть, свой личный сертификат, подпись файла и сам файл. Ну и вероятно я могу найти CA где-то но не понял где его получить и в каком формате. Пример выше у меня не завелся

В тестовом виде все заработало, т.к проверял я при помощи https://ruby-doc.org/std.../rdoc/OpenSSL/PKCS7.html
он же PKCS7_verify и по сути я просто проверял что подпись имеет корректный формат, т.к использовал флаг PKCS7_NOVERIFY

Вопрос: какой метод openssl использовать, чтобы подпись проверялась не только на валидность формата, но и вся цепочка сертификатов и желательно без зависимости на мой личный сертификат
Offline Aleksandr G*  
#9 Оставлено : 24 июня 2021 г. 9:51:09(UTC)
Aleksandr G*

Статус: Активный участник

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

Сказал(а) «Спасибо»: 8 раз
Поблагодарили: 29 раз в 27 постах
Цитата:
Вопрос: какой метод openssl использовать, чтобы подпись проверялась не только на валидность формата, но и вся цепочка сертификатов и желательно без зависимости на мой личный сертификат


Можно для примера посмотреть код их консольного приложения: https://github.com/openssl/openssl/blob/master/apps/cms.c
Например тут метод проверки: https://github.com/openssl/openssl/blob/master/apps/cms.c#L1199
Offline Vo.Oki  
#10 Оставлено : 24 июня 2021 г. 10:30:44(UTC)
Vo.Oki

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

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

Автор: Aleksandr G* Перейти к цитате
Цитата:
Вопрос: какой метод openssl использовать, чтобы подпись проверялась не только на валидность формата, но и вся цепочка сертификатов и желательно без зависимости на мой личный сертификат


Можно для примера посмотреть код их консольного приложения: https://github.com/openssl/openssl/blob/master/apps/cms.c
Например тут метод проверки: https://github.com/openssl/openssl/blob/master/apps/cms.c#L1199


Я пишу на руби и исходники на С мне вряд ли чем-то помогут. Более того я уже написал что пример выше у меня не воспроизвелся. Вероятно, потому что я не совсем понимаю как получить CA-сертификат и в каком формате. Вы не ответили ни на один из вопросов в моем сообщении. Так можно в любой ветке флудить - иди почитай исходиники и все равно какой у вас вопрос и контекст Think
Offline Vo.Oki  
#11 Оставлено : 1 июля 2021 г. 13:11:07(UTC)
Vo.Oki

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

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

Вопрос актуален, и свелся к тому что мне необходимо повторить с помощтю Openssl то, что делает консольная утилита
cryptcp -vsignf -detached doc.docx

Цитата:
Certificate chains are checked.
Folder './':
doc.docx... Signature verifying...
Signer: Иванов Иван Иванович, 234234, 324234234324, email@gmail.com
Signature's verified.

Отредактировано пользователем 1 июля 2021 г. 13:12:11(UTC)  | Причина: Не указана

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