Переслать заголовок клиента https в бэкэнд-приложение - PullRequest
0 голосов
/ 27 июня 2019

Я использую nginx как обратный прокси-сервер для внутреннего приложения. - Клиенты подключаются к nginx с сертификатом-A.pem, а nginx использует промежуточный ЦС, связанный с корневым ЦС, для проверки клиентов (ВСЕ ОК).

Теперь пришла проблема: - nginx должен пересылать запросы бэкэнд-приложению, используя тот же заголовок, что и реальный хост (содержащий сертификат-A.pem). Пакеты, пересылаемые бэкэнд-приложению, должны быть идентичны пакетам клиентов, полученным с помощью nginx.

Почему? Поскольку у меня очень большое количество клиентов для управления (каждый с другим сертификатом, выпущенным одним и тем же промежуточным центром сертификации), бэкэнду нужен сертификат (используется для выполнения каких-либо задач), но я хочу предварительно проверить этот сертификат с помощью nginx ( действительно самый быстрый)

Я устал от другой конфигурации, но я не могу понять, как proxy_set правильный заголовок

upstream proxy_server {
 server     127.0.0.1:8443;  <---my backend application
}

server {
listen   443 ssl;
listen   [::]:443;

ssl_certificate   /home/mender/Projects/utility-scripts/gwsw-root-gen/cert_tree/intermediate_CA/gwsw/x509-med_ca_gwsw.pem;

ssl_certificate_key   /home/mender/Projects/utility-scripts/gwsw-root-gen/cert_tree/intermediate_CA/gwsw/x509-med_ca_gwsw-key.pem;

location / {
proxy_pass   https://proxy_server;
proxy_redirect          off;
proxy_set_header    Host             $host;
proxy_set_header    X-Real-IP        $remote_addr;
proxy_set_header    X-Forwarded-For  $proxy_add_x_forwarded_for;
proxy_set_header    X-Custom-Referrer $http_x_custom_referrer;
   }
}

Невозможно проверить сертификат.

1 Ответ

0 голосов
/ 27 июня 2019

Пакеты, пересылаемые бэкэнд-приложению, должны быть идентичны пакетам клиентов, полученным nginx.

Если это так, я считаю, что вам нужно просто использовать nginx в режиме stream, действующем в качестве TCP-прокси. Я не знаю, что вы могли бы выполнить какую-либо проверку на стороне nginx, однако это будет зависеть только от бэкэнд-приложения.

Невозможно (я не думаю), чтобы оба nginx установили соединение SSL и также передали зашифрованные данные бэкэнду.

...