加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 运营中心 > Nginx > 正文

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

发布时间:2020-12-13 21:40:43 所属栏目:Nginx 来源:网络整理
导读:我想强制对我的虚拟主机进行ssl客户端验证.但得到“没有发送所需的SSL证书”错误,试图从中获取一些东西. 这是我的测试配置: # defaults ssl_certificate /etc/certs/server.cer; ssl_certificate_key /etc/certs/privkey-server.pem; ssl_client_certificat

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读