openssl и подключаемые движки дайджестов

Вопрос или проблема

Итак, в LibreSSL, скажем, у меня есть вызов вроде

openssl req -newkey gost2001 -pkeyopt dgst:streebog256 -pkeyopt paramset:A -streebog256 \
-nodes -subj "/C=Some/ST=Some/O=FooBar LLC/CN=John Doe/[email protected]" \
-keyout /tmp/key.pem -out /tmp/csr.pem -utf8

и это почти решает задачу. Но в OpenSSL 3.0 у меня есть gost как подключаемый движок, и он не распознает streebog256 как допустимый хеш:

Ошибка параметра ключа "dgst:streebog256"

Это потому, что в его мануале четко сказано:

“Движок не используется для хеширования, если не используется опция -engine_impl или он не настроен для этого, см. “Модуль конфигурации движка” в config(5).”

Смешно, но в мануале config(5) не сказано ни слова о конфигурировании хешей (я смог настроить gost в качестве движка для загрузки по умолчанию, так как есть множество примеров).

Так что, когда я использую openssl dgst с обоими -engine gost и -engine_impl gost, я вижу нужный streebog256 как допустимый хеш, но как мне сделать это при вызове openssl req или при использовании openssl.cnf?

В OpenSSL 3.0 вы можете настроить движок для использования хеша streebog256 для команды openssl req, добавив следующую строку в ваш файл openssl.cnf:

openssl_conf = openssl_init

[openssl_init]
engines = engine_section

[engine_section]
gost = gost_section

[gost_section]
default_algorithms = ALL,dgst,streebog256

Это установит хеш streebog256 в качестве хеша по умолчанию для движка GOST. Затем вы можете использовать следующую команду для генерации вашего CSR:

openssl req -newkey gost2001 -pkeyopt dgst:gost -pkeyopt paramset:A -streebog256 \
-nodes -subj "/C=Some/ST=Some/O=FooBar LLC/CN=John Doe/[email protected]" \
-keyout /tmp/key.pem -out /tmp/csr.pem -utf8 -engine gost

Ответ или решение

Использование Pluggable Engine и Digest в OpenSSL 3.0

Введение

В этом руководстве мы рассмотрим, как в OpenSSL 3.0 использовать pluggable engine для алгоритма стрибога (streebog256) при создании сертификатов с помощью команды openssl req. Понимание работы с engine и настройка конфигурации являются важными аспектами для обеспечения безопасности и корректности работы с криптографическими алгоритмами, такими как GOST.

Проблема

Существует ситуация, в которой при вызове команды openssl req для создания нового сертификата с использованием GOST возникает ошибка:

Key parameter error "dgst:streebog256"

Эта ошибка вызвана тем, что OpenSSL 3.0 требует специальной конфигурации для использования digest в engine. Стандартная документация упоминает, что engine не будет использоваться для digest до тех пор, пока не будет установлен соответствующий параметр.

Настройка OpenSSL с использованием конфигурационного файла

Чтобы устранить эту проблему, вам нужно правильно настроить файл конфигурации OpenSSL (openssl.cnf). Эта настройка позволит вам указать, что engine GOST сможет работать с алгоритмом streebog256.

  1. Редактирование файла openssl.cnf: Откройте ваш файл конфигурации OpenSSL (обычно он находится по пути /etc/ssl/openssl.cnf или другом подобном) и добавьте следующую конфигурацию:
openssl_conf = openssl_init

[openssl_init]
engines = engine_section

[engine_section]
gost = gost_section

[gost_section]
default_algorithms = ALL,dgst,streebog256

Вызов команды openssl req

После настройки конфигурационного файла вы можете использовать команду openssl req для генерации CSR (Certificate Signing Request) с использованием алгоритма стрибога следующим образом:

openssl req -newkey gost2001 -pkeyopt dgst:gost -pkeyopt paramset:A -streebog256 \
-nodes -subj "/C=Some/ST=Some/O=FooBar LLC/CN=John Doe/[email protected]" \
-keyout /tmp/key.pem -out /tmp/csr.pem -utf8 -engine gost

Важные элементы команды

  • -newkey gost2001: Указывает на создание нового ключа с использованием алгоритма GOST 2001.
  • -pkeyopt dgst:gost: Устанавливает режим использования digest для GOST engine.
  • -pkeyopt paramset:A: Указывает конкретный набор параметров для ключа.
  • -streebog256: Указывает, что необходимо использовать алгоритм стрибога с длиной 256 бит.

Проверка работы

После выполнения команды вы должны получить CSR без ошибок, и он будет корректно сгенерирован с использованием алгоритма streebog256. Для проверки самого CSR вы можете использовать следующее:

openssl req -in /tmp/csr.pem -noout -text

Заключение

Использование pluggable engine в OpenSSL 3.0 может показаться сложным, особенно когда речь идет о конкретных алгоритмах, таких как GOST. Однако, правильно настроив конфигурационный файл и определив необходимые параметры командной строки, вы сможете успешно интегрировать поддержку алгоритма стрибога в ваши криптографические системы.

Эта инструкция должна помочь вам в настройке и использовании OpenSSL 3.0 с GOST engine, что обеспечит надежность и безопасность в криптографических взаимодействиях.

Оцените материал
Добавить комментарий

Капча загружается...