【问题标题】:Getting Common Name from Distinguished Name of client certificate in NGINX从 NGINX 中客户端证书的专有名称获取通用名称
【发布时间】:2019-03-24 15:45:39
【问题描述】:

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

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

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

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

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

【问题讨论】:

    标签: nginx certificate client


    【解决方案1】:

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

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

    使用 $ssl_client_s_dn_legacy:/O=Test Organization/CN=testcn

    【讨论】:

      【解决方案2】:

      正如@christof-r 提到的,您的正则表达式与旧的 DN 模式匹配。请使用此正则表达式与当前 (> v1.11.6) 模式匹配。

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2018-07-11
        • 2023-03-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-21
        • 1970-01-01
        相关资源
        最近更新 更多