Пройдите аутентификацию в бэкэнде через NGINX, используя сертификат пользователя и закрытый ключ - PullRequest
0 голосов
/ 18 июня 2019

Моя программа на Golang не может работать с пользовательским сертификатом (http-клиентом) из-за неподдерживаемых старых алгоритмов tls. Я хочу решить эту проблему с помощью обратного прокси, используя nginx. Вот картинка описывает продуманную схему https://ibb.co/Jxcy52G.

[клиент] ----> [NGINX: 80] ---- (передача прокси с использованием сертификата, privkey) ----> [TOMCAT: 8443]

https://TOMCAT:8443 требуется проверка подлинности с помощью сертификата клиента. Я хочу скрыть этот факт из моего приложения. Приложение не должно требовать предоставления сертификата клиента. Вместо этого я бы хотел, чтобы NGINX использовал сертификат, хранящийся на сервере.

Моя конфигурация nginx.conf:

    server {
      listen 80;
     # server_name _;

      location / {
        proxy_ssl_certificate       "cert.pem";
        proxy_ssl_certificate_key   "key.pem";
        proxy_ssl_server_name on;
#       proxy_ssl_verify       off;
        proxy_ssl_name "iscs.telecomtest.ru";

                proxy_read_timeout 300;
                proxy_send_timeout 300;

        proxy_pass  https://195.11.xx.16:8443;
        proxy_buffering off;

      }
    }

Когда я пытаюсь открыть страницу http://my -nginx: 80 / , я получаю:

2019/06/18 15:16:22 [error] 25896#14556: *133 peer closed connection in SSL handshake while SSL handshaking to upstream, client: 127.0.0.1, server: , request: "GET /? HTTP/1.1", upstream: "https://195.11.xx.16/?", host: "127.0.0.1:19101"

Заранее спасибо.

...