Ssl

HTTPS 重定向強制

  • January 28, 2021

是否有一些自動免費工具可以強制執行 http-> https 重定向,這些工具不會影響 ht.access 文件?感謝您的任何建議!

“自動免費工具”和“伺服器管理”通常不會一起使用。“自動工具”通常是執行使用者可能想要執行的任務的工具,但手動執行起來很複雜,例如讀取硬碟驅動器參數、將音頻 CD 轉儲到文件等。

在管理伺服器時,您應該至少在某種程度上知道自己在做什麼。所以,讓我們繼續努力,讓您跟上進度,這樣您就知道自己在做什麼!

為什麼要重定向到 HTTPS

HTTP 是不安全的,但是 - 至少現在 - 在瀏覽器中訪問地址時是預設設置。當您轉到 時stackexchange.com,您的瀏覽器將預設1與埠 80 通信,並期待一個純 HTTP 響應。

具有中間人功能的攻擊者可以攔截這個普通的 HTTP 響應,並在其中插入“任何內容”,例如惡意 JavaScript、惡意軟體下載等……

因此,您希望確保您的使用者在不安全的 HTTP 頁面上花費盡可能少的時間並立即重定向到 HTTPS 頁面。

重定向如何工作?

當瀏覽器訪問 HTTP 站點時,您可以改為發送 301 響應,以及同一個站點,但 HTTPS。這告訴瀏覽器導航到該頁面。所有現代瀏覽器都尊重這樣的請求。

例如,在 nginx 中,執行此操作的伺服器配置如下所示:

server {
  listen 800;
  server_name example.com;
  return 301 https://$hostname$request_uri;
}

這將需要一個請求http://example.com/foo/bar並將其重定向到https://example.com/foo/bar

這夠了嗎?

不,這不對。如您所見,重定向仍然以純文字形式發送。攻擊者仍然可以修改它並阻止使用者訪問 HTTPS 站點。

因此,創建了HSTS標頭。此標頭的作用是指示瀏覽器將來的每個呼叫都應使用 HTTPS——即使明確請求了 HTTP。

但這仍然使該站點的第一個視圖不受保護。為了緩解這種情況,您的網站應添加到HSTS 預載入列表中。這裡的想法是伺服器告訴預載入列表他們支持 HSTS 並且將始終支持 HSTS。當瀏覽器第一次導航到該域時,它們會檢查該域是否在預載入列表中,如果是,則自動導航到 HTTPS。從不使用純 HTTP。

其他解決方案呢?

可以使用 JavaScript 重定向,但它們並不能比 HTTP 301 重定向更好地保護您。事實上,它們更糟糕,因為它們要求使用者下載並執行 JavaScript,而不是一個簡單的、無實體的 HTTP 響應。


1從技術上講,它將首先檢查其 HSTS 記憶體,但我們現在將跳過它。

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