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

 

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

相關文章
相關標籤/搜索