Диагностика ГОСТ-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.