Apache ~ 如何强制特定 IP 进行 SSL 客户端身份验证

Apache ~ 如何强制特定 IP 进行 SSL 客户端身份验证

还没有弄清楚如何轻松管理对我的 SSL 网站的访问。

我正在尝试根据客户端 IP 允许访问特定位置。

如果客户端 IP = 192.168.xx => 绕过客户端证书认证 如果客户端 IP !=192.168.xx => 请求客户端证书认证。

我尝试了几种方法(URL 重写、Vhost、允许、拒绝、满足……),但没有成功……

我的 SSL 客户端验证工作正常,我只是被这个基本的“if”请求困住了。我运行的是 Apache 2.12。

我已经尝试实现http://httpd.apache.org/docs/2.0/ssl/ssl_howto.html(部分如何要求来自 Internet 的客户端使用强密码的 HTTPS 和基本身份验证或客户端证书来访问 Intranet 网站上的子区域,但仍允许 Intranet 上的客户端使用普通 HTTP 访问?)但它不起作用..

相当令人沮丧,因为这正是我所寻找的;)(除了 authtype basic)

谢谢

<Location /folder>
SSLVerifyClient      require
SSLOptions           +StrictRequire
SSLRequire           %{SSL_CIPHER_USEKEYSIZE} >= 128
Satisfy Any
Order deny,allow
Deny from all
Allow from 192.168.x.x
</Location>

答案1

如果你想强制网络,只需使用这样的正则表达式:

<If "%{REMOTE_ADDR} !~ /^regex$ SSLVerifyClient require SSLVerifyDepth 2 </If>

答案2

好吧,看起来在 Apache <2.3 上不可能做到这一点

我已经更新到 Apache 2.4 并且刚刚添加了“if”指令:

<If "%{REMOTE_ADDR} == 'xx.xx.xx.xx">
SSLVerifyClient      require
            SSLOptions           +StrictRequire
            SSLRequire           %{SSL_CIPHER_USEKEYSIZE} >= 128
</If>

相关内容