nginx – 反向代理证书authentication

我试图使用nginx作为运行Tomcat的内部Web服务器的反向代理,该服务器托pipe着我们的ERP系统的前端。

它已经正常工作了:我可以完美地连接到nginx服务器(这是locking在我们的networking,不同的VLAN,防火墙等等等),然后反向代理到我的ERP服务器。

但是,我想要添加一个额外的保护层,要求用户在他们的计算机上有一个数字证书,以便他们可以访问第一个(nginx)服务器。 后端服务器不使用/不需要证书。

我已经通过这个教程http://nategood.com/client-side-certificate-authentication-in-ngi ,它允许我生成我的自签名证书和其他一切。

当在nginxconfiguration中使用ssl_verify_client可选时,我可以正常连接到我的后端服务器,但是不需要/不需要证书。

当我把它切换到ssl_verify_client时 ,所有的访问都被阻塞了

400 Bad Request No required SSL certificate was sent 

无论使用哪种浏览器(Chrome,IE,Edge,Firefox)。 当然,我已经把所有的证书/链条放在我的客户端计算机上,但是在任何浏览器上都没有证书。 我错过了什么?

这里是我的完整的nginxconfiguration:

 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; } } 

这个答案为我工作:

https://stackoverflow.com/questions/41933654/nginx-reverse-proxy-certificate-authentication

诀窍是创build一个个人证书(通过提供的命令),并使用证书下的主机名/ DNS组合。