Перейти к содержанию

Конфигурация OpenSSL и системный профиль ГОСТ

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

Изучить текущую конфигурацию

openssl version -a
openssl version -d -e -m
openssl engine -t -c gost
openssl list -providers
find /etc/ssl -maxdepth 2 -type f -name '*gost*.cnf' -o -name 'distro.cnf'

Сначала определите системный каталог OpenSSL и список активных модулей. Для выявления переменных среды:

printf 'OPENSSL_CONF=%s\n' "${OPENSSL_CONF:-<системная конфигурация>}"
printf 'OPENSSL_MODULES=%s\n' "${OPENSSL_MODULES:-<автоматический поиск>}"
printf 'OPENSSL_ENGINES=%s\n' "${OPENSSL_ENGINES:-<автоматический поиск>}"

Изолированный профиль ENGINE

Ниже создаётся пользовательский конфигурационный файл — системные /etc/ssl/*.cnf не изменяются:

mkdir -p "$HOME/gost-lab"
cat > "$HOME/gost-lab/engine.cnf" <<'EOF'
openssl_conf = openssl_init

[openssl_init]
engines = engines

[engines]
gost = gost_section

[gost_section]
engine_id = gost
default_algorithms = ALL
EOF

OPENSSL_CONF="$HOME/gost-lab/engine.cnf" \
  openssl engine -t -c gost

Если модуль не находится автоматически, сначала узнайте каталог:

openssl version -e
rpm -ql openssl-gost-engine | grep '/gost.so$'

И затем задайте корректный OPENSSL_ENGINES для этого процесса, например:

# ENGDIR берётся из 'openssl version -e' или полного пути к gost.so.
OPENSSL_ENGINES="$ENGDIR" \
OPENSSL_CONF="$HOME/gost-lab/engine.cnf" \
  openssl engine -t -c gost

Изолированный профиль Provider

cat > "$HOME/gost-lab/provider.cnf" <<'EOF'
openssl_conf = openssl_init

[openssl_init]
providers = provider_section

[provider_section]
default = default_section
gostprov = gost_section

[default_section]
activate = 1

[gost_section]
activate = 1
EOF

OPENSSL_CONF="$HOME/gost-lab/provider.cnf" \
  openssl list -providers -verbose

Если требуется указать путь к модулю, используйте OPENSSL_MODULES с каталогом, содержащим gostprov.so:

openssl version -m
rpm -ql openssl-gost-engine | grep '/gostprov.so$'
OPENSSL_MODULES="$MODULESDIR" \
OPENSSL_CONF="$HOME/gost-lab/provider.cnf" \
  openssl list -providers -verbose

Системный переключатель

В НАЙС.ОС предусмотрен openssl-switch-gost.sh, меняющий системный набор включаемых конфигураций OpenSSL:

command -v openssl-switch-gost.sh
ls -l /bin/openssl-switch-gost.sh

При централизованном администрировании сначала сохраните /etc/ssl/distro.cnf и запланируйте повторную проверку всех зависимых служб. Для работы над одной задачей предпочтительнее OPENSSL_CONF, который не влияет на другие процессы.

Конфигурация systemd-службы

Вместо изменения профиля для всего сервера можно прописать путь в отдельной службе через drop-in:

[Service]
Environment=OPENSSL_CONF=/etc/niceos/crypto/myapp-gost.cnf

Путь должен существовать и быть читаемым от имени пользователя службы. После изменения:

sudo systemctl daemon-reload
sudo systemctl restart myapp.service
sudo systemctl show myapp.service -p Environment

myapp.service — имя вашей службы, не системная служба НАЙС.ОС. Изменение рабочих сервисов выполняйте после проверки на тестовом окружении.

Контроль результата

openssl engine -t -c gost
openssl list -digest-algorithms | grep -i gost
openssl list -cipher-algorithms | grep -Ei 'kuznyechik|magma|gost'

Далее: Engine и Provider, управляющие параметры, неполадки.