Ошибки OpenSSL ГОСТ: диагностика по симптомам¶
Диагностику начинайте с самого короткого сценария: убедитесь, что модуль загружается, алгоритм виден, создаётся новый тестовый ключ, а подпись проходит проверку. Затем переходите к сертификатам, PFX и прикладным протоколам.
Быстрый набор команд¶
openssl version -a
openssl version -e -m -d
openssl engine -t -c gost
openssl list -providers -verbose
openssl list -digest-algorithms | grep -Ei 'gost|streebog'
openssl list -cipher-algorithms | grep -Ei 'gost|magma|kuznyechik'
rpm -q openssl openssl-libs openssl-gost-engine
rpm -ql openssl-gost-engine
Ошибка unsupported algorithm¶
Причины: не загружен ГОСТ-профиль, приложение запущено с другой конфигурацией, используется только default Provider или алгоритм имеет другое имя. Проверьте OPENSSL_CONF, OPENSSL_MODULES, OPENSSL_ENGINES и список алгоритмов.
env | grep '^OPENSSL_' || true
openssl engine -vvvv gost
openssl list -public-key-algorithms | grep -i gost
Ошибка invalid curve / invalid paramset¶
Набор параметров должен соответствовать алгоритму. Для gost2012_256 используйте семейство TCA/TCB/TCC/TCD или согласованные имена; для gost2012_512 — A/B/C. Проверка:
Ошибка unable to load private key¶
Проверьте заголовок PEM, права, кодировку ASN.1, пароль и наличие нужного декодера:
Не отправляйте полный вывод закрытого ключа в публичные журналы.
Подпись не проверяется¶
Сверьте исходные байты, открытый ключ и выбранный digest:
openssl pkey -in private.pem -pubout -outform DER > from-private.der
openssl pkey -pubin -in public.pem -outform DER > from-public.der
cmp from-private.der from-public.der
openssl dgst -md_gost12_256 -verify public.pem \
-signature message.sig message.txt
Успешная проверка математической подписи не подменяет проверку доверия к сертификату.
Ошибка PFX unknown pbe algorithm¶
Проверяйте исходный OID и режим Engine/Provider. Для контейнера КриптоПро с OID 1.2.840.113549.1.12.1.80 используется Provider с default, legacy и gostprov. Подробнее — КриптоПро.
Ошибка PFX cipher has no object identifier¶
Это признак проблемы кодирования PBE/OID при экспорте современного PFX. Upstream для Provider описывает специальную интеграцию с libcrypto для RFC 9337/9548. Установите обновления OpenSSL/ГОСТ из НАЙС.ОС, проверьте профиль Engine и повторите тест на эталонном контейнере; не заменяйте алгоритм на неизвестный только ради исчезновения ошибки.
Ошибка сертификата certificate verify failed¶
openssl x509 -in certificate.crt -noout -subject -issuer -dates
openssl verify -CAfile root.crt certificate.crt
openssl x509 -in certificate.crt -noout -text \
| grep -E 'DNS:|CA:|Key Usage|Signature Algorithm'
Проверьте SAN, назначение сертификата, часы, цепочку, отзыв и доверенный корень. Глобально отключать проверку сертификатов нельзя.
Ошибка в службе, а в интерактивной оболочке работает¶
Посмотрите окружение службы и пути модулей:
Интерактивный Bash может использовать OPENSSL_CONF, которого нет у systemd-службы. Исправляйте профиль конкретной службы, а не права и параметры всех процессов.
Готовый минимальный тест¶
umask 077
mkdir -p "$HOME/gost-lab/selfcheck" && cd "$HOME/gost-lab/selfcheck"
printf 'selfcheck\n' > payload.txt
openssl genpkey -algorithm gost2012_256 -pkeyopt paramset:TCA -out key.pem
openssl pkey -in key.pem -pubout -out pub.pem
openssl dgst -md_gost12_256 -sign key.pem -out payload.sig payload.txt
openssl dgst -md_gost12_256 -verify pub.pem \
-signature payload.sig payload.txt
Если этот тест проходит, но конкретное приложение не работает, изучайте его TLS-профиль, формат контейнера и конфигурацию среды запуска.