Ошибка при проверке подписи CMS.(unsupported algorithmCMS Verify - FAILED)

Здравствуйте! Не получается верифицировать документ.
php8.0-fpm, nginx

Подпись с detached. (с attached тоже пробывал не получается)
image
Error: 101310620 cert: verifyInfo:error:0609E09C:digital envelope routines:PKEY_SET_TYPE:unsupported algorithmCMS Verify - FAILED,

Установил сертификаты в docker контейнере.
image

Здравствуйте!
Можете отправить нам на почту knca@pki.gov.kz файл без подписи и detached-подпись? Попробуем проверить у себя

1 Симпатия

Вы в конечном итоге смогли запустить валидацию данных при помощи сертификата GOST в докере?

У меня примерно такая же проблема. KalkanCrypt возвращает мне 0x8f00022: Ошибка загрузки доверенных сертификатов когда я пытаюсь верифицировать данные подписанные юридическими лицами. Насколько я понимаю у него возникают проблемы с загрузкой сертификата GOST. При этом во время верификации и загрузки доверенного сертификата RSA такой проблемы нет.

Вот код установки сертификатов:
https://pastebin.pl/view/fb4a7b25

Установленные сертификаты:
https://pastebin.pl/view/ef88b8c8

Код валидации подписанных XML данных:
https://pastebin.pl/view/58445c62

С любым GOST не проходит верификацию: со старым и с новым(2022)? Сертификаты у Вас в формате PEM?

Я пробую по разному, с тестовым, с новым и старым.
Да, сертификаты в формате .pem

nca_gost_test.pem ->
nca_rsa_test.pem ->
root_rsa_test.pem -> 
root_gost_test.pem ->
root_rsa.pem -> 
root_gost.pem -> 
pki_rsa -> 
pki_gost.pem -> 
-----BEGIN CERTIFICATE-----

nca_gost.pem -> 
nca_gost2015.pem -> 
nca_rsa.pem -> 
0x30 0x82

На каком этапе определяется то, какой сертификат будет подгружаться?

Что эти записи значат?

Последние сертификаты кажется в байтах, нет?

Не, короче дело не в этом. Сейчас я запускаю код с приведенными к одному виду сертификатами, но все остается как прежде.

Сорри, те сертификаты видимо были взяты с сайта и закинуты в общую папку. Они не относятся к делу.

Можете signed.xml отправить нам на knca@pki.gov.kz? Попробуем повторить у себя

Нет, вы только свое время потратите.

Лучше помогите мне разобраться с этим:
https://pastebin.pl/view/46216e4b

Здесь внутри Docker контейнера при помощи openssl верифицирую сертификаты.
Первый сертификат, RSA, проходит верификацию, а второй, GOST, нет.

Может надо что-то доустановить для работы с GOST? Или самого KalkanCrypt должно хватать? Он сам на этапе инициализации подгружает алгоритм работы?..

Вот ещё одна попытка подключить движок к SSL:
https://pastebin.pl/view/bfa13906

На версии OpenSSL 1.1.1f 31 Mar 2020 данной ошибки не возникает.

Однако теперь я получаю это при верификации и RSA и GOST
https://pastebin.pl/view/117fec4b

Что интересно, если провести верификацию через openssl verify -engine /opt/kalkancrypt/lib/engine/libkncagost.so -CAfile gost root_gost.pem nca_gost.pem, выводит предыдщую ошибку о incompatibility

https://pastebin.pl/view/2d6206e4

Нативный openssl использовать не надо. Устанавливали папку kalkancrypt с SDK 2.0\C\Linux\libs_for_linux в каталог /opt/? Задали ли потом переменное окружение export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/kalkancrypt/:/opt/kalkancrypt/lib/engines? А вне docker на самом linux все хорошо работает у Вас?

Здравствуйте. Вчера разобрались вечером в чем проблема.
Почему-то путь lib/engines закодированы статически и при его явном отсутсвии библиотека libkncagost.so не загружается во время обработки GOST сертификатов.

Что на самом деле довольно странно, она ведь по идее должна загрузиться из любого места, если указана в $LD_LIBRARY_PATH.

Кроме того если вы во время работы не укажите её там, PHP будет жаловаться о невозможности её загрузки, что сбивает с толку.

А лично моя проблема была связана с тем, что у меня engines было без s в конце написано.

Так все же там у вас явно путь до libkncagost.so прописывается?..

1 Симпатия

Здравствуйте! Да, все верно, путь явно прописан.

Но, в новых тестовых библиотеках в SDK 2.0\GOST2015-TEST\PHP and C-libs Linux\PHP движки статический собраны вместе с модулями. Там нет необходимости останавливать kalkancrypt в /opt/