2013-03-28 85 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> 
相關問題