我使用的设置是将链式证书(根CA证书->中间CA证书->客户端证书)发送到Nginx。我需要将Nginx配置为将整个证书链转发到中间件。现在,它只是发送叶证书,即客户端证书。我从Nginx的文档(http://nginx.org/en/docs/http/ngx_http_ssl_module.html#ssl_client_certificate) 1- $ssl_client_escaped_cert 2- $ssl_client_cert中找到了以下选项
以上所有操作都不会返回完整的证书链。有没有人知道有没有这样的选项?
发布于 2021-11-08 12:58:51
这在设计上似乎是不可能的-请参阅https://serverfault.com/questions/576965/nginx-proxy-pass-with-a-backend-requesting-client-certificates
使用$ssl_client_escaped_cert
(如https://clairekeum.wordpress.com/2018/12/05/passing-client-cert-through-nginx-to-the-backend/中所述)似乎是您唯一的选择。
发布于 2021-11-16 19:56:31
这可能不是一个完整的答案,但我想我会发布一些资源,可能会给你一些想法。
如果您想要客户端证书的详细信息,那么一种选择是通过使用流模块来避免在nginx中终止Mutual TLS。下面是一个示例:
在此设置中,有2个通过nginx路由的相互TLS连接:
使用授权服务器进行身份验证的
。
请注意,它使用LUA plugin和ssl_client_raw_cert
属性来执行计算SHA256指纹的额外工作,而NGINX本身并不支持这些工作。
一般来说,从应用程序级组件中外部化Mutual TLS管道是有意义的,如上面的示例所示。例如,您可以将ssl_client_eacaped_cert
转发到您的中间件,但也许nginx应该做更详细的检查发行者的工作。
https://stackoverflow.com/questions/69881179
复制相似问题