对于欧洲网格基础设施 (EGI) 的一部分项目,我们需要对在 nginx 上运行的服务进行 SSL 客户端证书验证。由于 EGI 中允许使用多个根 CA,因此我们需要 nginx 在客户端证书验证期间检查所有根 CA。在 nginx 的文档中我只能找到ssl_client_certificate
允许指定一个包含根证书的文件的参数。
有没有办法在 nginx 中为客户端证书验证指定多个根 CA,或者我必须为此使用 Apache?
答案1
Nginx 支持多个根证书。只需将多个根 CA 证书放入指令中指定的文件中即可ssl_client_certificate
。注意文档明确地说出“证书”(复数)。
这是一个考虑为什么 nginx 不支持目录中的 ssl_client_certificate(Apache 支持)
“证书文件”与“证书路径”的区别不在于证书更新后是否运行某些程序(在这两种情况下,您都必须更新某些程序,要么 cat 到单个文件,要么 c_rehash 脚本在 CApath 的情况下创建符号链接)。区别在于内存中的证书与磁盘上的证书,后者意味着每次证书检查时都会进行系统调用和磁盘访问。
由于 nginx 的设计目标是在高负载下工作,每秒处理许多请求(和握手),因此它使用 CAfile 变体。而且由于 nginx 配置重新加载是无缝的,因此 CApath 变体不太可能增加任何额外的价值。
马克西姆·杜宁