2012-02-28 101 views
1

我使用的工具稱爲:來自Helicon技術的ISAPI重寫3精簡版(「用於IIS的」apache .htaccess mod_rewrite兼容模塊「)。ISAPI重寫 - 「重定向非www版本到www」規則與SSL

我已經應用了「重定向非www版本到www」規則(來自:http://www.helicontech.com/isapi_rewrite/doc/examples.htm#hotlinking)。即:

RewriteEngine on 

RewriteCond %{HTTPS} (on)? 
RewriteCond %{HTTP:Host} ^(?!www\.)(.+)$ [NC] 
RewriteCond %{REQUEST_URI} (.+) 
RewriteRule .? http(?%1s)://www.%2%3 [R=301,L] 

這工作正常,但我使用SSL時瀏覽器警告有一個小問題。 假設我想要一個url請求:https://MyDomain.com/abc/login.aspx重定向到:https://www.MyDomain.com/abc/login.aspx 瀏覽器將顯示如下警告:「本網站提供的安全證書是針對不同網站的地址發佈的。」這是有道理的,因爲我們的SSL證書只適用於「www.MyDomain.com」(而不是「MyDomain.com」)。如果您點擊「繼續瀏覽本網站?」它很好地重定向到所需的網址,並且一切都很好。

我的問題:有什麼可以做的瀏覽器SSL證書警告不會出現嗎? (最好不用更改SSL證書)。

謝謝。

編輯:

我希望有一些辦法讓ISAPI重寫更改URL,從而使IIS不「看」的要求:「MyDomain.com」,並且只看到修改後的請求爲:「www.MyDomain.com」(以便SSL證書警告不會發生)。我認爲這可能是一個時間問題。但它看起來像事件的時間是固定的,這樣IIS將始終在原始請求的上下文中檢查SSL證書?任何人都可以確認嗎?

+0

更新我的答案以迴應您的編輯。 – 2012-02-28 07:22:18

回答

2

如果您的證書只對https://www.foo.com有效,那麼對https://foo.com的請求將始終與該證書不匹配消息一起迎接。

通配符證書通常很貴,但如果您購物一下,您可以找到一個接近正常證書的價格。

如果所有活動都是在www子域上進行,那麼顯而易見的解決方案是不發送流量到https://foo.com。畢竟,通過向https://xyz.foo.com發送流量,您會得到相同的消息,但這不是問題,因爲沒有理由在此處發送流量。同樣,可能沒有理由將流量發送到https://foo.com


在回答您的更新:

我希望有一些辦法讓ISAPI重寫更改URL,從而使IIS不「看」的要求:「MYDOMAIN .com「,並且只會將已更改的請求看到:」www.MyDomain.com「(以便不會發生SSL證書警告)。我認爲這可能是一個時間問題。但它看起來像事件的時間是固定的,這樣IIS將始終在原始請求的上下文中檢查SSL證書?任何人都可以確認嗎?

這不是一個真正的計時問題。 IIS 已將「查看」該請求以重定向該請求,並且需要在每個請求中顯示其身份。當服務器的身份與主機名稱不匹配時,需要符合標準的瀏覽器才能提醒用戶(或簡單地「掛斷」)。

http://tools.ietf.org/html/rfc2818#section-3.1

如果主機名是可用的,客戶必須檢查它反對 服務器的身份,以防止人在這方面的中間人攻擊的服務器證書消息, 呈現。

[...]

如果主機名不證書中匹配的身份,用戶 面向客戶必須或者通知用戶(客戶端可以給用戶 有機會繼續與任何連接案例)或 終止連接並顯示錯誤的證書錯誤。