KalkanCrypt PHP Segmentation fault при проверке сертификата через CLR

Добрый день.
На oracle linux установлен php 8.2.20
Версия расширения kalkancrypt:
KalkanCrypt support => enabled
KalkanCrypt version => v.2.0.10
OpenSSL version => OpenSSL 1.1.1d 25 Sep 2019 (pki.gov.kz) Kalkan-crypt 1.1.1

Тестовые корневые сертификаты установлены.

$container = "keys/Gost2015/2023.11.17_valid/Физическое лицо/Valid/GOST512_8147287582df9bb4710e461804acd49b88bf45c4.p12";
$tsaurl = "http://test.pki.gov.kz/tsp/";
$password = "Qwerty12";
$alias = "";

KalkanCrypt_Init();
KalkanCrypt_TSASetUrl($tsaurl);

$storage = Kalkan::KCST_PKCS12; //1

if (Kalkan::KCR_OK === KalkanCrypt_LoadKeyStore($storage, $password, $container, $alias)) {
    $code = KalkanCrypt_X509ExportCertificateFromStore($alias, 0, $outCert);

    $flags_validate = Kalkan::KC_USE_OCSP; //1028
    $validPath = "http://test.pki.gov.kz/ocsp/";
    $outInfo = "";
    $getResp = "";
    $code = KalkanCrypt_X509ValidateCertificate($outCert, $flags_validate, $validPath, 0, $outInfo, Kalkan::KC_NOCHECKCERTTIME, $getResp);
    if (Kalkan::KCR_OK === $code) {
        echo "Check OCSP OK\n";
    }

    $flags_validate = Kalkan::KC_USE_CRL; //1026
    //downloaded from http://test.pki.gov.kz/crl/nca_gost_test.crl
    $validPath = __DIR__ . "/nca_gost_test.crl";
    $outInfo = "";
    $getResp = "";
    $code = KalkanCrypt_X509ValidateCertificate($outCert, $flags_validate, $validPath, 0, $outInfo, Kalkan::KC_NOCHECKCERTTIME, $getResp);
    if (Kalkan::KCR_OK === $code) {
        echo "Check CRL OK\n";
    }
}

При попытке проверить сертификат при помощи CRL приложение падает с ошибкой:

$ php ./clr_test.php
Check OCSP OK
Segmentation fault (core dumped)

Проверка через OCSP работает нормально, а CRL стабильно падает.
Пробовал разные ключи - результат один и тот же.
В чем может быть дело?
Спасибо.

Добрый вечер! Спасибо за обратную связь! В следующих обновлениях устраним эту неисправность.

Добрый вечер!

Аналогичная проблема при использовании libkalkancrypwr-64.so версии 2.0.12. Не как расширения PHP, а как отдельной библиотеки.

При использовании версии 2.0.2 возвращает ошибку о том, что невозможно открыт файл CRL.

Есть какие-то прогнозы когда будет исправление?

У нас иногда встречаются CMS с 100+ подписями, OCSP в 95% такую пачку запросов не переваривает за приличное время.

Добрый день! Попробуйте обновить SDK. Там есть версия 2.0.13

Добрый день!

Обновился до 2.0.13, “Segmentation fault” пропала, но появилась

0x8f00012: Verify chain and certificates: unable to get certificate CRL

CRL-файлы свежие, путь до них указываю корректно.

Подскажите ещё, пожалуйста. Параметр checkTime метода X509ValidateCertificate все так же “зарезервировано, в текущей версии не используется” или это в документации устаревшая информация? Есть какой-то механизм проверить отозван ли сертификат в момент времени в прошлом (на момент подписания)?

Добрый день! Который CRL используете?

checkTime все еще зарезервировано

CRL скачиваю по ссылкам с сайта:

curl https://crl.pki.gov.kz/nca_rsa.crl -o ./nca_rsa.crl
curl https://crl.pki.gov.kz/nca_d_rsa.crl -o ./nca_d_rsa.crl
curl https://crl.pki.gov.kz/nca_gost.crl -o ./nca_gost.crl
curl https://crl.pki.gov.kz/nca_d_gost.crl -o ./nca_d_gost.crl

С CRL по резервным ссылкам ситуация не меняется.

UPD. Получил из полей сертификата адреса crl полного и дельты:

http://crl.pki.gov.kz/nca_gost_2022.crl
http://crl.pki.gov.kz/nca_d_gost_2022.crl

Если их скачать, и при проверке указывать путь к ним, то все работает.

Теперь вопрос уже может звучать немного по другому - откуда все таки скачивать актуальные crl? Каждый раз получать из полей сертификата и обновлять их - это значит, что время скачивания добавиться в общее время выполнения проверки. Хотелось бы обновлять CRL как-то фоном, без привязки к вызову методов проверки.

Актуальные всегда по этим адресам, что Вы указывали тут. Если хотите проверять сертификаты без скачиания crl файлов, то можно воспользоваться ocsp сервисом НУЦ РК: http://ocsp.pki.gov.kz/

Которые из: https://crl.pki.gov.kz/nca_gost.crl или http://crl.pki.gov.kz/nca_gost_2022.crl?

Первый из них для сертификатов GOST старого стандарта, второй нового стандарта.

Тогда все ясно. Пожалуйста, добавьте ссылки для сертификатов GOST нового стандарта в список CRL - https://pki.gov.kz/developers/

И ещё вопрос - а есть какой-то механизм все таки проверить был ли сертификат отозван на момент подписания в прошлом? Может быть без kalkancrypt, хоть какой-нибудь способ есть?