如何为nginx客户端证书validation指定多个根证书?

对于作为欧洲电网基础设施(EGI)一部分的项目,我们需要对运行在nginx上的服务进行SSL客户端证书validation。 由于在EGI中允许有多个根CA,我们需要nginx在客户端证书validation期间检查它们。 在nginx的文档中,我只能find参数ssl_client_certificate ,它允许指定一个包含根证书的文件。

有没有一种方法可以在nginx中为客户端证书validation指定多个根CA,或者我必须使用Apache吗?

Nginx支持多个根证书。 只需将多个根CA证书放入ssl_client_certificate指令中指定的文件ssl_client_certificate 。 注意文档明确地说“证书”(复数)。

这是为什么nginx不支持目录中的ssl_client_certificate(就像Apache一样)

“证书文件”与“证书path”的区别并不在于证书更新之后运行某些东西(在这两种情况下,您都必须更新某些东西,无论是cat到单个文件还是c_rehash脚本,以便在CApath的情况下创build符号链接)。 不同之处在于内存中的证书与磁盘上的证书有关,后者意味着每个证书检查中的系统调用和磁盘访问。

由于nginx被devise为在高负载下工作,每秒有很多请求(和握手),所以它使用CAfile变体。 而且,由于nginxconfiguration重新加载是无缝的,所以CApath变体不太可能会添加任何额外的值。

Maxim Dounin