Вопрос или проблема
Итак, в 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.
- Редактирование файла 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, что обеспечит надежность и безопасность в криптографических взаимодействиях.