Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ssl/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ssl 具有多个客户端证书的nginx客户端身份验证_Ssl_Nginx - Fatal编程技术网

Ssl 具有多个客户端证书的nginx客户端身份验证

Ssl 具有多个客户端证书的nginx客户端身份验证,ssl,nginx,Ssl,Nginx,我正在尝试设置NGINX来对多个客户端执行客户端身份验证。我遇到的问题是,这些客户端将具有不同的证书,基本上是不同的根CA: [clientA.crt] ClientA > IntermediateA > RootA [clientB.crt] ClientB > IntermediateB1 > IntermediateB2 > RootB ssl_client_certificate /etc/nginx/ssl/clientA.crt; ssl_ver

我正在尝试设置NGINX来对多个客户端执行客户端身份验证。我遇到的问题是,这些客户端将具有不同的证书,基本上是不同的根CA:

[clientA.crt] ClientA > IntermediateA > RootA
[clientB.crt] ClientB > IntermediateB1 > IntermediateB2 > RootB
ssl_client_certificate /etc/nginx/ssl/clientA.crt;   
ssl_verify_client on;
我查看了NGINX文档,注意到
ssl\u客户端\u证书
指令。但是,该属性本身似乎不起作用,例如,如果我现在将其配置为仅适用于clientA:

ssl_client_certificate /etc/nginx/ssl/clientA.crt;   
ssl_verify_client on;
然后我收到了400个错误代码。通过查看其他问题,我发现我还必须使用
ssl\u verify\u depth:3
。因此,如果我想在一个bundle PEM中连接clientA和clientB以允许这两个客户端,我需要使用一个高值吗?此指令的目的是什么?使用捆绑的PEM将数字设置为高意味着什么?

此指令用于指定您信任哪些证书进行基于客户端的身份验证。请注意,基本上每次尝试连接时都会发送整个列表(如果不需要,请按照文档使用
ssl\u trusted\u certificate

ssl_client_certificate /etc/nginx/ssl/clientA.crt;   
ssl_verify_client on;
如上所述,请注意,
ssl\u verify\u depth
基本上控制进入您的系统的容易程度-如果您将其设置为足够高的值,并且某人能够使用您信任的CA之一获得证书,或者通过他们信任的中介机构之一生成他们自己的证书,然后他们就可以通过你的nginx进行身份验证,不管这是否是你想要的

ssl_client_certificate /etc/nginx/ssl/clientA.crt;   
ssl_verify_client on;
因此,通常情况下,用于基于客户端的身份验证的所有证书都是由私人认可的CA生成的,因此,通常情况下,链的长度应该不会太长。如果您想使两个CA之间的深度数相等,以从
ssl\u verify\u depth
获得最佳保护,那么可以创建一个额外的CA来添加到深度,然后将该CA添加到受信任列表中,而不是现在的实际中介。(请注意,一旦涉及到几个中介体,浏览器将需要知道它们的存在,这通常是缓存的,如果不缓存,可能会导致许多重影问题。)

ssl_client_certificate /etc/nginx/ssl/clientA.crt;   
ssl_verify_client on;

另外,请注意,您实际上不必在指定的文件中有一个CA—它可以包括多个不相关的“根”CA,因此,如果您想添加多个独立CA,您实际上不必费心创建另一个CA来验证它们—您只需按原样包括这些独立CA。

您的用例是什么?您想拥有不同的客户端证书,以便能够针对您的nginx进行身份验证吗?你能解释一下你要做的最终设置吗achieve@TarunLalwani我希望使用不同的客户端证书对同一NGINX进行身份验证。
ssl_client_certificate /etc/nginx/ssl/clientA.crt;   
ssl_verify_client on;