You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Apache服务器级SSLVerifyClient配置无法设置IP例外的问题求助

Apache服务器级SSLVerifyClient配置无法设置IP例外的问题求助

各位好,我遇到了一个Apache SSL配置的棘手问题,折腾了好久都没解决,想请大家帮忙指点一下。

情况是这样的:我需要在服务器级别强制开启客户端证书验证,配置如下:

SSLVerifyClient require
SSLVerifyDepth 2
RequestHeader set SSL_CLIENT_VERIFY ""

但同时,我想给特定IP 10.128.119.45/32 开个例外——允许这个IP的请求不需要客户端证书就能访问。我尝试在<Location />块里添加了条件判断:

<Location />
<If "-R '10.128.119.45/32'">
SSLVerifyClient none
</If>

SSLOptions +StdEnvVars ExportCertData OptRenegotiate
RequestHeader set SSL_CLIENT_S_DN_CN "%{SSL_CLIENT_S_DN_CN}s"
RequestHeader set SSL_CLIENT_I_DN_CN "%{SSL_CLIENT_I_DN_CN}s"
RequestHeader set SSL_CLIENT_CERT "%{SSL_CLIENT_CERT}s"
RequestHeader set SSL_CLIENT_VERIFY "%{SSL_CLIENT_VERIFY}s"

Require expr %{SSL_CLIENT_I_DN_CN} ==  'Example Users Authentication' && ( %{SSL_CLIENT_S_DN_CN}  ==  "user1" ||  %{SSL_CLIENT_S_DN_CN}  ==  "user55"  ||  %{SSL_CLIENT_S_DN_CN}  ==  "user2" ||  %{SSL_CLIENT_S_DN_CN}  ==  "user21575"  ||  %{SSL_CLIENT_S_DN_CN}  ==  "user3" || %{SSL_CLIENT_S_DN_CN}  ==  "user4")
</Location>

结果这个例外完全没生效,用curl测试的时候还是会提示需要客户端证书:

curl: (35) NSS: client certificate not found (nickname not specified)

我也试过把<If>块移到<Location>外面,直接放在服务器级配置里,还是一样的问题。另外我不能去掉服务器级的SSLVerifyClient require,否则会出现重协商失败的错误:

AH02261: Re-negotiation handshake failed

想问问大家,我是不是哪里配置错了?或者有没有其他方法可以实现这个“服务器级强制验证,但特定IP例外”的需求?

备注:内容来源于stack exchange,提问作者sebelk

火山引擎 最新活动