Ssl 具有多个客户端证书的nginx客户端身份验证
我正在尝试设置NGINX来对多个客户端执行客户端身份验证。我遇到的问题是,这些客户端将具有不同的证书,基本上是不同的根CA: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
[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;