从客户端提取CN';nginx入口的安全证书
我正在使用kubernetes/ingress nginx。 任务是使用nginx入口从客户端证书中提取CN字段。我搜索了一会儿,找到了一个解决方案:从客户端提取CN';nginx入口的安全证书,nginx,kubernetes,kubernetes-ingress,nginx-ingress,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; } map$ssl\u client\u s\u dn$ssl\u client\u s\u dn\u cn{ 默认为“; ~CN=(?[^/,
map $ssl_client_s_dn $ssl_client_s_dn_cn {
default "";
~CN=(?<CN>[^/,\"]+) $CN;
}
map$ssl\u client\u s\u dn$ssl\u client\u s\u dn\u 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;
nginx.ingres.kubernetes.io/http-snippets:|
映射$ssl\u客户端\u s\u dn$ssl\u客户端\u s\u dn\u cn{
默认为“;
~CN=(?[^/,\“]+)$CN;
}
nginx.ingres.kubernetes.io/configuration-snippet:|
代理\u集\u头远程用户$ssl\u客户端\u s\u dn\u cn;
可能是有人遇到了这个问题,知道如何适当地调整,因为我没有主意了。如果您知道更优雅的方法,请在这里分享您的知识。
提前感谢。我找到了一个解决方案,希望它能帮助别人:
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;
nginx.ingres.kubernetes.io/http-snippet:|
映射$ssl\u客户端\u s\u dn$ssl\u客户端\u s\u dn\u cn{
默认为“;
~CN=(?[^/,\“]+)$CN;
};
nginx.ingres.kubernetes.io/location-snippet:|
代理\u集\u头远程用户$ssl\u客户端\u s\u dn\u cn;
您使用的是哪个版本的nginx?nginx版本:nginx/1.17.7感谢您在这里提出的解决方案,我运行了nginx-ingress-1.36.3
,需要进行一些调整。http snippet
不再有注释。我将映射模块移动到ConfigMap
以调整我的nginx配置和现在一切正常