Esta resposta funcionou para mim:
O truque era criar um certificado pessoal (através do comando fornecido) e usar o combo hostname / DNS sob o certificado.
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;
}
}
Esta resposta funcionou para mim:
O truque era criar um certificado pessoal (através do comando fornecido) e usar o combo hostname / DNS sob o certificado.