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

Диагностика ГОСТ-TLS и mTLS в Nginx

Проверка проводится в три слоя: конфигурация веб-сервера, доступность криптографических алгоритмов, фактически согласованный TLS-сеанс.

nginx -V 2>&1
openssl list -providers
openssl ciphers -v 'ALL' | grep -Ei 'GOST|KUZ|MAGMA' || true
sudo nginx -t
journalctl -u nginx -n 100 --no-pager

Не пересылайте полный nginx -T без очистки — там могут находиться секреты, внутренние адреса, пути сертификатов и служебные токены.

TLS-проверка

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

Сверяем согласованный шифр, версию TLS, цепочку X.509 и код проверки. Если показан обычный AES, нельзя писать, что соединение полностью использует ГОСТ, даже когда сертификат подписан ГОСТ-алгоритмом.

mTLS

  • Нет сертификата клиента → отказ.
  • Просроченный сертификат → отказ.
  • Неверное EKU → отказ.
  • Цепочка другого УЦ → отказ.
  • Сертификат есть, но отсутствует в актуальном CRL → проверить политику отзыва.

Аппаратный ключ

Если nginx -t не открывает ключ, проверьте отдельный Provider PKCS#11, модуль производителя, URI и политику доступа системного пользователя Nginx к токену. Не ослабляйте права на устройство и не раскрывайте PIN в конфигурации.

Отказ и откат

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