nginx - autenticação de certificado de proxy reverso

1

Estou tentando usar o nginx como um proxy reverso para um servidor web interno executando o Tomcat, que hospeda um front-end para o nosso sistema ERP.

Já está funcionando bem: posso me conectar perfeitamente ao servidor nginx (que está bloqueado em nossa rede, VLAN, firewall, etc etc etc) e, em seguida, inverter o proxy para o meu servidor ERP.

No entanto, quero adicionar uma camada extra de proteção, exigindo que os usuários tenham um certificado digital em seus computadores, para que possam acessar o primeiro servidor (nginx). O certificado não é usado / necessário para o servidor de backend.

Eu já passei por esse tutorial link o que me permitiu gerar meus certificados auto-assinados e tudo mais.

Ao usar o ssl_verify_client opcional na configuração do nginx, posso me conectar normalmente ao meu servidor de back-end, mas nenhum certificado é solicitado / exigido.

Quando eu alterno para ssl_verify_client em , todos os acessos são bloqueados por um

400 Bad Request

No required SSL certificate was sent

Não importa qual navegador eu esteja usando (Chrome, IE, Edge, Firefox). É claro que coloquei todos os certificados / correntes no meu computador cliente, mas nenhum certificado é solicitado em nenhum navegador. O que eu sinto falta?

Aqui está minha configuração completa do nginx:

server {
        listen 443;
        ssl on;
        server_name 103vportal;

        ssl_password_file /etc/nginx/certs/senha.txt;
        ssl_certificate      /etc/nginx/certs/server.crt;
        ssl_certificate_key  /etc/nginx/certs/server.key;
        ssl_client_certificate /etc/nginx/certs/ca.crt;
        ssl_verify_client on;


        location / {
                proxy_pass http://10.3.0.244:16030;
                proxy_http_version 1.1;
                proxy_set_header Upgrade $http_upgrade;
                proxy_set_header Connection "upgrade";

                proxy_read_timeout 300;
                proxy_send_timeout 300;
        }

}
    
por Luiz Carlos 30.01.2017 / 12:21

1 resposta

0

Esta resposta funcionou para mim:

link

O truque era criar um certificado pessoal (através do comando fornecido) e usar o combo hostname / DNS sob o certificado.

    
por 03.02.2017 / 10:22