nginx – 如何在一个虚拟服务器上使用ssl_verify_client = ON而在另一个虚拟服务器上使用ssl_verify_client = OFF?

前端之家收集整理的这篇文章主要介绍了nginx – 如何在一个虚拟服务器上使用ssl_verify_client = ON而在另一个虚拟服务器上使用ssl_verify_client = OFF?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

我想强制对我的虚拟主机进行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.

在较旧的Nginx版本中,默认虚拟主机的ssl_verify_client设置用于同一IP端口组合上的所有其他基于名称的虚拟主机.其他一些SSL选项(ssl_verify_depth,ssl_prefer_server_ciphers)也以相同的方式处理.如果绝对无法升级,则使用单独的IP或端口可能是一种解决方法.

注意来自Nginx changelog的1.0.9:

*) Bugfix: the "ssl_verify_client","ssl_verify_depth",and
   "ssl_prefer_server_ciphers" directives might work incorrectly if SNI
   was used.

Nginx源中的相关更改:r4034在trunk中,r4246在1.0分支中.

猜你在找的Nginx相关文章