You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在NGINX中配置多CN的$ssl_client_s_dn检查及正则通配符

解决NGINX证书CN匹配问题

你的问题出在原有正则表达式的匹配逻辑上——你写的CN=\*\.lmback\.com是用来匹配CN值为*.lmback.com的通配符证书,但你的实际证书CN是具体的子域名(比如map.lmback.com),自然匹配失败。

修正后的配置

将正则表达式调整为匹配任意以.lmback.com结尾的CN,同时保留对LMProdusr的精确匹配:

location /api/1.0/alameda {
    set $ssl_client_s_dn "CN=map.lmback.com"; # 测试用,实际环境可注释
    if ($ssl_client_s_dn !~ "(CN=[a-zA-Z0-9-]+\.lmback\.com|CN=LMProdusr)"){
       return 403;
    }

    return 410;
}

正则逻辑说明

  • CN=[a-zA-Z0-9-]+:匹配子域名部分,允许字母、数字和连字符,覆盖map、gustavo这类子域名
  • \.lmback\.com:精确匹配域名后缀,转义.避免被正则当作任意字符处理
  • |CN=LMProdusr:并列匹配精确的CN值LMProdusr

如果你的子域名包含除字母、数字、连字符外的其他字符,可把[a-zA-Z0-9-]+替换为.*?(非贪婪匹配任意字符),更灵活的写法如下:

if ($ssl_client_s_dn !~ "(CN=.*?\.lmback\.com|CN=LMProdusr)"){
   return 403;
}

验证建议

实际环境中可以去掉测试用的set $ssl_client_s_dn,让NGINX自动获取客户端证书的DN值进行校验。

内容的提问来源于stack exchange,提问作者Sergey Bakotin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 00:59:56