从Nginx-ingress上的客户证书中提取CN

时间:2020-03-27 15:21:14

标签: nginx kubernetes kubernetes-ingress nginx-ingress

我正在使用kubernetes / ingress-nginx。 任务是使用nginx入口从客户端证书中提取CN字段。我搜索了一段时间,找到了解决方法:

   map  $ssl_client_s_dn  $ssl_client_s_dn_cn {
    default "";
    ~CN=(?<CN>[^/,\"]+) $CN;
  }

但是我无法将此代码用于nginx入口。这就是我目前拥有的,并且不起作用。

nginx.ingress.kubernetes.io/http-snippets: |
  map  $ssl_client_s_dn  $ssl_client_s_dn_cn {
    default "";
    ~CN=(?<CN>[^/,\"]+) $CN;
  }
nginx.ingress.kubernetes.io/configuration-snippet: |
  proxy_set_header Remote-User $ssl_client_s_dn_cn;

可能是有人遇到了它,并且知道如何适当地调整它,因为我没有想法。
如果您知道更优雅的方式,请在这里分享您的知识。
预先感谢。

1 个答案:

答案 0 :(得分:3)

我找到了解决方案,希望可以对某人有所帮助

    nginx.ingress.kubernetes.io/http-snippet: |
     map  $ssl_client_s_dn  $ssl_client_s_dn_cn {
       default "";
       ~CN=(?<CN>[^/,\"]+) $CN;
     };

    nginx.ingress.kubernetes.io/location-snippet: |
     proxy_set_header REMOTE-USER $ssl_client_s_dn_cn;