我试图使用nginx作为运行Tomcat的内部use服务器的反向代理,Tomcat是我们ERP系统的前端。
它已经很好地工作了:我可以完美地连接到nginx服务器(它被锁在我们的网络、不同的VLAN、防火墙等),然后反向代理到我的ERP服务器。
但是,我希望增加一个额外的保护层,要求用户在他们的计算机上拥有一个数字证书,这样他们就可以访问第一个(nginx)服务器。对后端服务器不使用/不需要证书.
我已经通过了本教程http://nategood.com/client-side-certificate-authentication-in-ngi,它允许我生成我的自我签名证书和其他一切。
当在nginx配置上使用ssl_verify_client可选时,我可以正常地连接到后端服务器,但不需要任何证书。
当我将其切换到ssl_verify_client打开时,所有访问都会被
400 Bad Request
No required SSL certificate was sent无论我使用哪个浏览器(Chrome,IE,Edge,Firefox)。当然,我已经将所有证书/链都放在了我的客户端计算机上,但是在任何浏览器上都不需要证书。我错过了什么?
下面是我的完整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;
}
}发布于 2017-02-03 09:22:03
这个答案对我来说是有效的:
https://stackoverflow.com/questions/41933654/nginx-reverse-proxy-certificate-authentication
诀窍是创建一个个人证书(通过提供的命令),并在证书下使用主机名/DNS组合。
https://serverfault.com/questions/829391
复制相似问题