gpt4 book ai didi

ssl - 使用多个客户端证书的 nginx 客户端身份验证

转载 作者:太空宇宙 更新时间:2023-11-03 12:51:09 28 4
gpt4 key购买 nike

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

[clientA.crt] ClientA > IntermediateA > RootA
[clientB.crt] ClientB > IntermediateB1 > IntermediateB2 > RootB

我查看了 NGINX 文档并注意到 ssl_client_certificate 指令。但是,该属性本身似乎并不能单独工作,例如,如果我将其配置为现在仅适用于 clientA:

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

然后我收到了 400 错误代码。通过查看其他问题,我发现我还必须使用 ssl_verify_depth: 3。因此,如果我想在捆绑 PEM 中连接 clientA 和 clientB 以允许两个客户端,我是否需要使用高值?该指令的目的是什么?使用捆绑的 PEM 设置为高数字有什么影响?

最佳答案

http://nginx.org/r/ssl_client_certificate指令用于指定您信任哪些证书用于基于客户端的身份验证。请注意,每次尝试连接时,基本上都会发送整个列表(如果不需要,请根据文档使用 ssl_trusted_certificate)。

如上所述,请注意 ssl_verify_depth 基本上控制进入您的系统的难易程度——如果您将其设置为足够高的值,并且有人能够通过以下方式获得证书您信任的 CA 之一,或通过他们信任的中间人之一来生成他们自己的证书,然后他们将能够使用您的 nginx 进行身份验证,无论您是否希望这样做。

因此,通常的做法是,所有用于基于客户端的身份验证的证书都是由私有(private)认可的 CA 生成的,因此,通常,链条的长度不应该太长。如果你想均衡两个 CA 之间的深度数,以获得来自 ssl_verify_depth 的最佳保护,那么可以想象创建一个额外的 CA 来增加深度,然后将该 CA 添加到受信任列表现在是一个真正的中介。 (请注意,一旦涉及到一些中介,它就会变得复杂,浏览器将需要知道它们的存在,这通常是缓存的,并且在未缓存时可能会导致许多幽灵问题。)

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

关于ssl - 使用多个客户端证书的 nginx 客户端身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48937334/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com