我正在尝试使用nginx作为反向代理到运行Tomcat的内部Web服务器,该服务器托管我们ERP系统的前端。它已经很好地工作了:我可以完美地连接到nginx服务器(它被锁定在我们的网络上,不同的VLAN、防火墙等等),然后反向代理到我的ERP服务器。
但是,我想增加一层额外的保护,要求用户在计算机上拥有数字证书,以便访问第一个(nginx)服务器。该证书对于后端服务器不使用/必需。
我已经阅读了这个教程http://nategood.com/client-side-certificate-authentication-in-ngi,它允许我生成自签名证书和其他所有内容。
当在nginx配置中使用ssl_verify_client optional时,我可以正常连接到我的后端服务器,但不需要任何证书。
当我将其切换到ssl_verify_client on时,所有访问都被阻止。
无论我使用哪种浏览器(Chrome、IE、Edge、Firefox),都没有要求我使用证书/链。当然,我已经将所有证书/链放在了客户端计算机上。那么,我缺少什么呢?
以下是我的完整的nginx配置:
但是,我想增加一层额外的保护,要求用户在计算机上拥有数字证书,以便访问第一个(nginx)服务器。该证书对于后端服务器不使用/必需。
我已经阅读了这个教程http://nategood.com/client-side-certificate-authentication-in-ngi,它允许我生成自签名证书和其他所有内容。
当在nginx配置中使用ssl_verify_client optional时,我可以正常连接到我的后端服务器,但不需要任何证书。
当我将其切换到ssl_verify_client on时,所有访问都被阻止。
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;
}
}
ca.crt
签名,并在浏览器的 个人证书 下列出?并且自重新配置服务器以来,您已经清除了浏览器缓存吗? - Richard Smith