2013-03-28 33 views
2

我想,要知道如果有从网页重定向浏览器的方式,如果它没有提出有效的客户端证书。Apache的HTTPS客户端身份验证或重定向

例如

在我的网站这部分需要相互SSL认证:

subdomain.domain.com 

这是我的网站的主要部分,它是市民:

domain.com 

用于身份验证的客户端证书由我自己的CA(自签名)颁发。 服务器证书相同。 “已知”客户端也将我的CA添加到其信任的CA商店。

如果有没有一个有效的客户端证书第三方客户端访问subdomain.domain.com应当被重定向到domain.com的

我想在虚拟主机领域的一些配置。我打得四处

RewriteCond %{SSL:SSL_CLIENT_VERIFY} !=SUCCESS 

SSLVerifyClient optional/required/optional_no_ca 

但它没有似乎工作,因为我想拥有它。

我发现这篇文章 http://mail-archives.apache.org/mod_mbox/httpd-docs/201204.mbox/%[email protected]%3E

,不管怎样明白它的说法,但如果没有另一种方式去解决它我不知道,也可能是被固定在同时(不仅仅是文档)

谢谢。

+0

无人配置?至少有人告诉我:这是不可能的。 – SetMeUp

回答

2

我认为你是在正确的轨道上。当存在提供给服务器的有效客户端证书时,Apache的mod_ssl将设置一些Apache环境变量。如果SSL_CLIENT_S_DN_CN Apache环境变量为空,则以下配置块应该重定向。

<Location /path/to/protect/> 
    SSLVerifyClient optional 
    SSLVerifyDepth 1 
    SSLOptions  +StdEnvVars 

    RewriteEngine on 
    RewriteCond  %{SSL:SSL_CLIENT_S_DN_CN} ="" 
    RewriteRule  (.*) http://domain.com 
</Location> 

如果客户端证书没有设置的请求,则SSL_CLIENT_S_DN_CN将是空的,并且被用作重写条件。

希望这会有所帮助。

0

这里是我的这个任务

<Directory "c:/inetPub/../sd"> 

    SSLVerifyClient optional 
    SSLVerifyDepth 1 

    RewriteEngine on 
    RewriteCond  %{SSL:SSL_CLIENT_VERIFY} !^SUCCESS$ 
    RewriteRule  (.*) http://other_domain.com [R] 
</Directory> 
相关问题