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

HTTPS-сервер с ГОСТ-сертификатом

Руководство описывает подключение готового сертификата и ключа к Nginx в НАЙС.ОС. Создание сертификатов вынесено в OpenSSL и ГОСТ.

Проверка системы

nginx -V 2>&1
openssl list -providers
openssl ciphers -v 'ALL' | grep -Ei 'GOST|KUZ|MAGMA' || true

Списки алгоритмов доступны через системную OpenSSL; они не заменяют проверку реально согласованного HTTPS-соединения.

Подготовка стенда

Для лаборатории используйте отдельный порт 8443, собственное тестовое имя и тестовую цепочку сертификатов. Не заменяйте рабочий виртуальный хост до завершения проверки.

server {
    listen 8443 ssl;
    server_name test-gost.example.invalid;

    ssl_certificate     /etc/nginx/gost/server-chain.pem;
    ssl_certificate_key /etc/nginx/gost/server-key.pem;

    ssl_protocols TLSv1.2 TLSv1.3;

    location /healthz {
        default_type text/plain;
        return 200 "niceos-gost-test\n";
    }
}

Это каркас, а не универсально готовый ГОСТ-криптопрофиль. Выбор ssl_ciphers, групп и параметров TLS зависит от профиля OpenSSL и совместимых клиентов. Настраивайте их по фактическому списку шифров и результату тестового соединения, а не по имени ключа.

Права на закрытый ключ

Секретный ключ доступен только процессам, которым необходимо его читать. Не помещайте его в Git, публичные каталоги, резервные копии без шифрования или пользовательский ~/Downloads.

Приёмка

sudo nginx -t
sudo systemctl reload nginx

openssl s_client \
  -connect 127.0.0.1:8443 \
  -servername test-gost.example.invalid \
  -showcerts </dev/null

Проверяем: успешную цепочку X.509, правильный SAN, поддержанный алгоритм, отсутствие ошибок TLS и HTTP-ответ /healthz. Для полного ГОСТ-TLS приёмочный журнал должен показывать реально согласованный ГОСТ-набор алгоритмов. Проверка сертификата с ГОСТ-подписью при обычном AES-TLS не эквивалентна ГОСТ-TLS.

Откат

Храните предыдущий файл конфигурации. Если nginx -t не проходит, не перезагружайте рабочую службу. После успешного reload при проблемах с клиентами верните прежний конфигурационный блок и повторите nginx -t перед откатом.