apache 客户端证书 if-else 条件

apache 客户端证书 if-else 条件

我有一个<Location>如下所示的虚拟主机:

  <Location /app1/>
    SSLVerifyClient require
    SSLVerifyDepth 2
    SSLRequireSSL
    SSLOptions +OptRenegotiate
    SSLCipherSuite HIGH
    SSLRequire %{SSL_CLIENT_S_DN_OU} eq "Customer1" \
    or %{SSL_CLIENT_S_DN_OU} eq "Customer2" \
    or %{SSL_CLIENT_S_DN_OU} eq "Customer3"
 </Location>

这要求每个想要访问 /app1/ 的人都向服务器出示客户端证书。后端服务器是 tomcat。

是否可以将未经身份验证的访问者“路由”到与拥有证书的访问者不同的位置?例如,没有证书的访问者获得的功能较少...

谢谢

答案1

您可以使用 mod_rewrite 将人们发送到其他地方。

首先,您必须配置您的 Apache,以便允许没有证书的人访问(即使用SSLVerifyClient optional)。请注意,这可能会导致某些浏览器出现故障。请在上线前检查这一点。

然后,第二步,您可以像这样使用 mod_rewrite:

RewriteEngine On
# Only match requests which don't have a proper client certificate
RewriteCond %{SSL:SSL_CLIENT_VERIFY} !SUCCESS

# Prefix the URL for those people with /guest
RewriteRule ^/(.*)$ /guest/$1

相关内容