我试图使用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 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;
}
}发布于 2017-01-30 13:05:06
假设您已经为用户生成了私钥和证书请求,并使用客户端CA对其进行签名。您需要将私钥和签名证书输入浏览器中的个人证书列表中。
我发现最好的方法是创建一个受密码保护的PKCS#12 (因为一些浏览器坚持密码保护)。我使用以下OpenSSL命令:
cat user.key user.crt | openssl pkcs12 -export -out user.p12https://stackoverflow.com/questions/41933654
复制相似问题