我有一个<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