我想强制对我的虚拟主机进行ssl客户端验证.但得到“没有发送所需的SSL证书”错误,试图从中获取一些东西.
这是我的测试配置:
# defaults
ssl_certificate /etc/certs/server.cer;
ssl_certificate_key /etc/certs/privkey-server.pem;
ssl_client_certificate /etc/certs/allcas.pem;
server {
listen 1443 ssl;
server_name server1.example.com;
root /tmp/root/server1;
ssl_verify_client off;
}
server {
listen 1443 ssl;
server_name server2.example.com;
root /tmp/root/server2;
ssl_verify_client on;
}
第一台服务器回复200个http代码,但第二个返回“400错误请求,没有发送所需的SSL证书,Nginx / 1.0.4”.
也许,在同一个IP上使用ssl_verify_client是不可能的?我应该将这些服务器绑定到不同的IP,它会解决我的问题吗?
如果要在同一IP地址和端口上使用多个基于名称的虚拟主机(使用SNI),但需要为这些主机设置不同的ssl_verify_client,则需要至少升级到Nginx> = 1.0.9.
原文链接:https://www.f2er.com/nginx/435700.html在较旧的Nginx版本中,默认虚拟主机的ssl_verify_client设置用于同一IP端口组合上的所有其他基于名称的虚拟主机.其他一些SSL选项(ssl_verify_depth,ssl_prefer_server_ciphers)也以相同的方式处理.如果绝对无法升级,则使用单独的IP或端口可能是一种解决方法.
*) Bugfix: the "ssl_verify_client","ssl_verify_depth",and
"ssl_prefer_server_ciphers" directives might work incorrectly if SNI
was used.