nginx SSL证书配置(双向认证)

最近在做一个项目,有个接口安全性要求比较高,所以要用到双向认证,就开始究了一下具体搭建

具体是参考这里:http://blog.csdn.net/kunoy/article/details/8239653 

遇到的问题作一下笔记

主要是双向认证问题,很多分享都是基于整个域名访问都是双向认证的,但是很多时候,我们开发可能只是某个路由或某个接口下才需要双向认证

很多的分享只要加上   ssl_verify_client on;  ssl_client_certificate ca.crt; 实现的,达不到我们只是局部接口才需要双向认证的,下面就是完整解决办法  主要是 ssl_verify_client optional; 这个选项

ssl_verify_client

语法:ssl_verify_client on|off|optional 
默认值:ssl_verify_client off 
使用字段:main, server 
启用客户端证书审核,参数“optional”在客户端主动提出时检查证书(0.8.7与0.7.63版本之前为"ask")。

也在一些社区看到的提示

path based client ssl verification is messy as it requires the client/server to do a (secure) renegotiation.

You’re better off doing a separate domain or make it ssl_verify_client optional at the top level and check the compliance at application level.

最后在location 里加上

location /test {
            if ($ssl_client_verify != 'SUCCESS') {
                return 403;
                break;
            }
            
            return 200 "success";
        }    

server {
        listen       443;
        server_name  xxx.xx.com;
        ssl                  on;
        ssl_certificate      server.crt;
        ssl_certificate_key  server.key; 
        ssl_client_certificate ca.crt;
		ssl_session_timeout  30m;
		ssl_verify_client optional;
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2; 
        ssl_ciphers  ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
        ssl_prefer_server_ciphers   on;
        
		location /test {
			if ($ssl_client_verify != 'SUCCESS') {
			    return 403;
				break;
		    }
			
			return 200 "success";
        }    
	
		location / {
            root   html; #站点目录
            index  index.html index.htm;
        }
}

 

如果还有同学有更好的方法,也可以交流一下

转载于:https://my.oschina.net/u/1789379/blog/760267

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值