Apache mod_ssl修改环境变量(剥离值)

qncylg1j  于 2022-12-14  发布在  Apache
关注(0)|答案(1)|浏览(112)

目前,我正在httpd.conf中执行以下操作来设置X-Client-Subject-CN

RequestHeader set X-Client-Subject-CN %{SSL_CLIENT_SAN_OTHER_msUPN_0}s

这是可行的,X-Client-Subject-CN被设置为我的证书中的用户主体名称(UPN),格式为“12345678@abc”
但是,我需要将其设置为“12345678”。从mod_ssl环境变量SSL_CLIENT_SAN_OTHER_msUPN_0中删除主体名称的@domain部分的最佳方法是什么?
我尝试过使用mod_rewrite来设置一个基于regex的新环境变量,但我认为我做得不对:

RewriteCond  %{SSL_CLIENT_SAN_OTHER_msUPN_0}  ^.*
RewriteRule  ([^@abc]*) [E=USER_NAME:$1]
        
RequestHeader set X-Client-Subject-CN %{USER_NAME}
xbp102n0

xbp102n01#

我想出了另一种方法:
我没有使用Rewrite规则,而是在这里找到了RequestHeader编辑功能:
https://serverfault.com/questions/526655/how-do-i-create-a-custom-header-from-an-existing-ssl-environment-variable
我使用的完整解决方案:

RequestHeader set X-Client-Subject-CN %{SSL_CLIENT_SAN_OTHER_msUPN_0}s
RequestHeader edit X-Client-Subject-CN ([^-]*)@(.*) $1

因此,我将X-Client-Subject-CN头设置为完整值(12345678@abc),然后编辑X-Client-Subject-CN头并使用正则表达式获取@前面的值。

相关问题