我需要在NGINX中获得客户端证书的CN,以将其附加到代理标头中。
我已经为此找到了以下地图代码。
import cors = require('cors')
app.use(
cors(),
express.json(),
express.urlencoded({extended:false})
)
但是可悲的是,它只为以下$ ssl_client_s_dn返回一个空字符串: CN = testcn,O =测试组织
我也用其他DN测试了它。但是问题总是一样。
答案 0 :(得分: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 =测试组织/ CN = testcn
答案 1 :(得分:0)
正如@ christof-r所述,您的正则表达式与旧版DN模式匹配。请使用此正则表达式与当前(> v1.11.6)模式匹配。
map $ssl_client_s_dn $ssl_client_s_dn_cn {
default "";
~CN=(?<CN>[^,]+) $CN;
}