Как побороть ошибку генерации сертификата c помощью openssl ГОСТ? Здравствуйте! Пытаюсь создать сертификаты с поддержкой гост.
Получаю следующую ошибку при генерации сертификата уц:error:8007D06C:lib(128):PKEY_GOST_CTRL:invalid digest type:gost_pmeth.c:82:
Команда создания ключа:openssl genpkey -algorithm gost2001 -pkeyopt paramset:A -out cakey.pem
Создание сертификата:openssl req -key cakey.pem -new -x509 -extensions v3_ca -out cacert.pem
Илиopenssl req -engine gost -newkey gost2001 -pkeyopt paramset:A -x509 -extensions v3_ca -passout pass:135246 -subj "/C=RU/ST=Moscow/L=Moscow/O=organization/CN=sample.ru/emailAddress=user@sample.ru" -keyout priv.pem -out req.csr
engine "gost" set.
Generating a 2048 bit GOST2001 private key
writing new private key to 'priv.pem'
-----
140203655325600:error:8007D06C:lib(128):PKEY_GOST_CTRL:invalid digest type:gost_pmeth.c:82:
Ключ генерится, сертификат не хочет.
В openssl.cnf прописано:openssl_conf = openssl_def
[openssl_def]
engines = engine_section
[engine_section]
gost = gost_section
[gost_section]
engine_id = gost
dynamic_path = /usr/lib64/openssl/engines/libgost.so
default_algorithms = ALL
CRYPT_PARAMS = id-Gost28147-89-CryptoPro-A-ParamSetopenssl ciphers | tr ":" "\n" | grep -i gost
GOST2001-GOST89-GOST89
GOST94-GOST89-GOST89
Пробовал на разных версиях openssl (OpenSSL 1.0.2a-fips 19 Mar 2015 и OpenSSL 1.0.1e 11 Feb 2013)
В файле gost_pmeth.c на 82 строке:/* --------------------- control functions ------------------------------*/
static int pkey_gost_ctrl(EVP_PKEY_CTX *ctx, int type, int p1, void *p2)
{
struct gost_pmeth_data *pctx =
(struct gost_pmeth_data *)EVP_PKEY_CTX_get_data(ctx);
switch (type) {
case EVP_PKEY_CTRL_MD:
{
if (EVP_MD_type((const EVP_MD *)p2) != NID_id_GostR3411_94) {
GOSTerr(GOST_F_PKEY_GOST_CTRL, GOST_R_INVALID_DIGEST_TYPE);
return 0;
}
pctx->md = (EVP_MD *)p2;
return 1;
}

21 Авг 2019 в 07:13
405 +2
0
Ответы
1

Для того чтобы побороть данную ошибку генерации сертификата с помощью OpenSSL и поддержкой ГОСТ, нужно убедиться, что используемая версия OpenSSL поддерживает соответствующие алгоритмы и параметры ГОСТ.

Убедитесь, что у вас установлена правильная версия OpenSSL, которая поддерживает ГОСТ (например, OpenSSL с поддержкой ГОСТ 34.10-2001). Можно попробовать обновить OpenSSL до последней версии.

Проверьте конфигурационный файл OpenSSL (обычно openssl.cnf), чтобы убедиться, что в нем правильно указаны параметры и пути для поддержки ГОСТ.

При создании ключа и сертификата убедитесь, что вы используете правильные параметры для ГОСТ 2001 (например, paramset:A). Можете попробовать использовать другие параметры для ГОСТ.

Попробуйте использовать другой подход для генерации сертификата с поддержкой ГОСТ. Например, вместо команды req можно попробовать использовать команду x509 для создания самоподписанного сертификата.

Если проблема не устраняется, попробуйте обратиться к документации OpenSSL, форумам или ресурсам с информацией о поддержке ГОСТ в OpenSSL.

Также, напоминаю, что использование криптографических алгоритмов и параметров требует наличие установленного и настроенного цифрового сертификата, а также учета требований законодательства в вашей стране по использованию криптографии.

20 Апр в 13:05
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Название заказа не должно быть пустым
Введите email
Бесплатные доработки
Гарантированные бесплатные доработки
Быстрое выполнение
Быстрое выполнение от 2 часов
Проверка работы
Проверка работы на плагиат
Интересные статьи из справочника
Поможем написать учебную работу
Название заказа не должно быть пустым
Введите email
Доверьте свою работу экспертам
Разместите заказ
Наша система отправит ваш заказ на оценку 84 706 авторам
Первые отклики появятся уже в течение 10 минут
Прямой эфир