从 NGINX 中客户端证书的可分辨名称获取通用名称

Ben*_*sse 5 client certificate nginx

我需要在 NGINX 中获取客户端证书的 CN,以将其附加到代理标头中。

我已经为此找到了以下地图代码。

map $ssl_client_s_dn $ssl_client_s_dn_cn {
    default "";
    ~/CN=(?<CN>[^/]+) $CN;
}
Run Code Online (Sandbox Code Playgroud)

但遗憾的是它只为以下 $ssl_client_s_dn 返回一个空字符串: CN=testcn,O=Test Organization

我也用其他 DN 进行了测试。但问题总是一样的。

Chr*_*f R 1

您使用的模式需要旧 DN,因为它假定将/RDN 分开。因此(自 nginx v1.11.6 起)以下工作有效:

map  $ssl_client_s_dn_legacy  $ssl_client_s_dn_cn {
  default "";
  ~/CN=(?<CN>[^/]+) $CN;
}
Run Code Online (Sandbox Code Playgroud)

使用 $ssl_client_s_dn_legacy:/O=测试组织/CN=testcn