nginx-反向代理证书认证

nginx-反向代理证书认证

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

它已经运行良好:我可以完美地连接到 nginx 服务器(它被锁定在我们的网络上、不同的 VLAN、防火墙等等等等),然后反向代理到我的 ERP 服务器。

但是,我确实想增加一层额外的保护,要求用户在计算机上拥有数字证书,这样他们才能访问第一个 (nginx) 服务器。后端服务器不需要证书。

我已经看过这个教程了 http://nategood.com/客户端-side-certificate-authentication-in-ngi 这使得我能够生成自签名证书和其他所有内容。

使用时ssl_verify_client 可选在 nginx 配置上,我可以正常连接到我的后端服务器,但不需要/不需要证书。

当我将其切换到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;
        }

}

答案1

这个答案对我有用:

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

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

相关内容