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

Обратный прокси: ГОСТ на внешнем и внутреннем соединении

Обратный прокси строит два независимых соединения: от пользователя к Nginx и от Nginx к приложению. Криптографические профили этих участков могут отличаться.

Типовые архитектуры

Внешний ГОСТ, внутренний HTTP: клиент использует ГОСТ-TLS, а backend расположен на защищённом локальном сокете или интерфейсе. При выходе за пределы доверенного узла такой вариант требует дополнительной защиты.

Внешний обычный TLS, внутренний ГОСТ: используется там, где внешний клиент не поддерживает ГОСТ, а внутреннее приложение требует соответствующий криптопрофиль.

ГОСТ на обоих участках: требуется отдельная проверка каждой TLS-сессии. Наличие ГОСТ на внешнем участке не означает автоматически ГОСТ в proxy_pass.

Шаблон с отдельной проверкой upstream

location /service/ {
    proxy_pass https://backend.example.invalid:9443;
    proxy_ssl_server_name on;
    proxy_ssl_name backend.example.invalid;
    proxy_ssl_verify on;
    proxy_ssl_trusted_certificate /etc/nginx/gost/upstream-ca.pem;
    proxy_ssl_verify_depth 2;
}

Включайте proxy_ssl_verify on: без него HTTPS-шифрование не защищает от подмены upstream на уровне сертификата. Для внутреннего ГОСТ-TLS отдельно задаются поддерживаемые настройки OpenSSL и проверяются фактические алгоритмы handshake.

Приёмка двух участков

  • Сохраните лог TLS клиента до Nginx.
  • Снимите согласованный профиль Nginx → upstream.
  • Проверьте подлинность имени и сертификата на обоих участках.
  • Проверьте передачу HTTP-ответа и недоступность upstream напрямую из внешней сети.
  • Сохраните возможность отката к предыдущему proxy-конфигу.

Не путайте шифрование внешнего TLS с HTTP-шифрованием содержимого на backend: это разные границы доверия.