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

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

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

遇到的问题做一下笔记安全

主要是双向认证问题,不少分享都是基于整个域名访问都是双向认证的,可是不少时候,咱们开发可能只是某个路由或某个接口下才须要双向认证session

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

ssl_verify_client

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

也在一些社区看到的提示dom

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

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.spa

最后在location 里加上.net

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

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;
        }
}

 

若是还有同窗有更好的方法,也能够交流一下

相关文章
相关标签/搜索