Apache-2.2

有沒有辦法在“mod_ssl”之前訪問“mod_rewrite”?

  • February 16, 2012

設想:

我有 2 個域:thinkingmonkey.me& thinkingmonkey.com。整個網站都可以在 下訪問https。從 CA 購買了具有通用名稱的證書thinkingmonkey.me

對於http

情況也是如此https

問題

+ mod_ssl起作用並且在****mod_rewrite重寫到https://thinkingmonkey.me之前發生 TLS 握手。 + 由於證書中的通用名稱在thinkingmonkey.me下,因此此連接不受信任警告會在瀏覽器中顯示。 + 除非我通過接受證書完成握手,否則它不會被重定向到thinkingmonkey.me。這很煩人。

那麼,

有沒有辦法訪問mod_rewrite之前mod_ssl

還是

我必須購買單獨的證書才能擺脫這個?

不,HTTPS 是基於 TLS/SSL 的 HTTP(參見RFC 2818),它首先建立 SSL/TLS 連接,然後再發送任何 HTTP 流量。mod_rewrite將始終在 SSL/TLS 連接建立後應用。

不這樣做實際上是一個安全問題,因為攻擊者可以在證書驗證之前重寫和重定向客戶端。即使 TLS 升級是在 HTTP(RFC 2817,實際上從未使用/支持,也不是https)內,您仍然希望重定向來自受信任的實體。

解決此問題的方法是使用具有多個主題備用名稱 (SAN) DNS 條目的證書,每個主機名一個或多個證書(在這種情況下,您可能也需要每個證書一個 IP 地址,除非您願意使用伺服器名稱指示)。

引用自:https://serverfault.com/questions/360979