設定 HTTP 嚴格傳輸安全 (HSTS)

您可以在回應標頭中指定「HTTP 嚴格傳輸安全 (HSTS)」,以便您的伺服器向用戶端通告它只接受 HTTP 要求。 您可以將任何非 HTTPS 要求重新導向至啟用 SSL 的虛擬主機。

開始之前

  • 如果 SSL/TLS 由 IBM HTTP Server (IHS) 之前的裝置終止,且 IBM HTTP Server 未配置 SSL/TLS ,則下列程序不適用。 相反地,您必須在終止 SSL/TLS 的裝置上配置「HTTP 嚴格傳輸安全」。 如需「HTTP 嚴格傳輸安全」的相關資訊,請參閱 RFC 6797 第 7 節
  • 定義您的 HSTS 原則只適用於網域,還是包含子網域。
  • 決定該網域是否可以列在預先安裝在用戶端中的已知 HSTS 主機清單中。
  • 決定用戶端多久可以快取指出該網域是 HSTS 主機的資訊。
  • 限制: 伺服器不會將 HSTS 標頭新增至 HTTP 304 (未修改) 回應。 這些回應用來驗證快取即時性。 除非用戶端存取伺服器上至少一個未快取 (或陳舊) 的資源,否則它不會看到 HSTS 標頭。
  • 只有在用戶端連接至 HTTP (埠 80) 及 HTTP (埠 443) 的預設埠時, HSTS 才會運作。 如果您在 IBM HTTP Server 配置中使用非預設埠,則需要使用使用預設埠的其他前端裝置。 在 IBM HTTP Server 與用戶端之間放置其他前端裝置。 例如:
    client ----> load balancer (ports 80 and 443) ----> IHS (other ports) 

程序

  1. 啟用回應標頭的修改。
    httpd.conf 檔中,解除註解 mod_headers 模組的下列 Load Module 指引:
    LoadModule headers_module modules/mod_headers.so
  2. 定義用戶端的 HSTS 原則。

    httpd.conf 檔中進行下列更新:

    1. 新增 Strict-Transport-Security 的 Header 指引。
      下列範例的 Header 指定用來定義 HSTS 原則的有用選項。 指引指定伺服器一律需要 HTTPS 連線。 HTTPS 連線同時適用於網域和任何子網域。 用戶端可將該網域保留在其預先安裝的 HSTS 網域清單中,最長一年(31536000 秒)。
      Header always set Strict-Transport-Security "max-age=31536000;
            includeSubDomains; preload"
    2. 將 Header 指引新增至針對 Secure Sockets Layer (SSL) 啟用的每一個虛擬主機區段 <virtualhost>
  3. 將要求從 啟用 SSL 的虛擬主機重新導向至已啟用的虛擬主機。
    RewriteEngine on 
    RewriteRule ^/(.*) https://%{HTTP_HOST}/$1 [R,L]
    • 將段落新增至 httpd.conf 檔案中的每一個 非 SSL 虛擬主機區段一次。
    • 將該段落新增至廣域 httpd.conf 檔一次,但是放在虛擬主機區段之外。

結果

您設定 IBM® HTTP Server ,讓用戶端只能透過 HTTP 來連接指定的網域及子網域。 為了確保 IBM HTTP Server 不會透過非 SSL 處理非 HTTP 要求,您將伺服器設定為將這些要求重新導向至已啟用 SSL 的虛擬主機。

下一步

將伺服器當成前端系統新增至您的應用程式伺服器環境,使您應用程式伺服器與用戶端之間的連線都會經由 HTTPS。