修復 Nextcloud 嚴格傳輸安全 (HSTS) 標頭缺失警告

當 Nextcloud 報告「未設定 Strict-Transport-Security HTTP 標頭」時,問題出在 HTTPS 回應服務層:Apache、Nginx 或終止 TLS 的公共反向代理。 Nextcloud 目前的管理手冊將缺少標頭或max-age低於指定15552000秒數列為安全警告。一旦公共 HTTPS 端點上存在該標頭,瀏覽器就能記住主機必須在宣告的時間內使用 HTTPS。

基本改動雖小,但影響範圍重大。僅將 HSTS 套用至具有有效憑證的可用 HTTPS 端點。首先僅對主機進行設定;僅當所有受影響的主機名稱都準備好使用 HTTPS 時,才新增includeSubDomains其他設定preload。本指南參考了 2026 年 10 月發布的 Nextcloud 管理文檔,包括其安全警告指南和伺服器加固指南。

警告的含義

HTTP 嚴格傳輸安全性 (HSTS) 是一種回應頭,它指示瀏覽器對特定主機名稱的後續請求使用 HTTPS。這有助於防止瀏覽器在透過有效的 HTTPS 連線接收到該原則後,回退到純文字 HTTP。 Nextcloud 會檢查公共回應,並在未找到建議最短有效期限的策略時發出警告。

HSTS 不能取代啟用 TLS 或將 HTTP 重新導向到 HTTPS。瀏覽器只接受透過 HTTPS 傳遞的 HSTS 策略。首次存取時,在瀏覽器學習到該策略之前,除非主機名稱包含在瀏覽器的預先載入清單中,否則初始請求仍然可能存在安全漏洞。普通的 HTTP 到 HTTPS 重定向仍然有效,但並不能取代 HSTS 標頭。

找到應該發送標頭的伺服器

在更改配置之前,請先追蹤公共請求。如果使用者透過 HTTPS 直接連線到 Apache 或 Nginx,請設定該 Web 伺服器的 TLS 虛擬主機。如果負載平衡器、入口伺服器、CDN 或反向代理終止了公用 TLS 連接,請設定將回應傳送到瀏覽器的層。僅在內部 HTTP 連線中新增標頭可能不會影響公共回應。

Nextcloud 將反向代理列為支援的部署模式,並要求管理員在適用情況下定義受信任的代理程式。代理程式的 HSTS 職責獨立於 Nextcloud 的 URL 和客戶端 IP 處理。具體來說,它overwriteprotocol有助於 Nextcloud 識別某些代理佈局中的外部協定;設定它本身並不會添加 HSTS 回應頭。如果應用程式產生 HTTP 連結或報告其他與代理相關的警告,請查閱Nextcloud 官方反向代理設定指南。

在改變政策之前

  • 確認https://cloud.example.com載入時沒有憑證錯誤,並且使用了預期的憑證鏈。
  • 檢查HTTP請求是否透過HTTPS重定向到相同的主機名稱。
  • 在考慮之前,請先確定同一父域下的其他服務和子網域includeSubDomains。
  • 保持管理路由或伺服器控制台可用。如果瀏覽器快取了 HSTS 訊息,則在策略有效期內,瀏覽器將拒絕使用者繞過憑證錯誤。

範例中的主機名稱請替換cloud.example.com為您真實的 Nextcloud 主機名稱。請勿將範例主機名稱直接複製到生產環境配置中。

在 Apache 中設定 HSTS。

在為 Nextcloud 提供服務的 Apache TLS 虛擬主機中,啟用 headers 模組並新增原則。 Nextcloud 的安全加固指南建議使用六個月的有效期includeSubDomains;以下僅主機版本是一個謹慎的起點:

<VirtualHost *:443>
    ServerName cloud.example.com

    <IfModule mod_headers.c>
        Header always set Strict-Transport-Security "max-age=15552000"
    </IfModule>

    # Existing Nextcloud and TLS directives
</VirtualHost>

確保mod_headers在你的發行版 Apache 設定中啟用了該功能。將指令新增至 HTTPS 虛擬主機,而不是連接埠 80 虛擬主機。使用適用於已安裝發行版的命令驗證配置,然後使用其服務管理員重新載入 Apache。例如,許多基於 systemd 的發行版支援 `--config` 指令sudo apachectl configtest,sudo systemctl reload apache2在某些發行版中,該服務名為 ` <service-name> httpd`。使用與你的軟體包和服務名稱相符的命令。

在 Nginx 中設定 HSTS

server在監聽 HTTPS 並提供公共 Nextcloud 主機名稱的Nginx 設定區塊中,新增:

server {
    listen 443 ssl;
    server_name cloud.example.com;

    add_header Strict-Transport-Security "max-age=15552000" always;

    # Existing certificate and Nextcloud configuration
}

此always參數使 Nginx 無論回應狀態如何都會新增標頭。 Nginx 文件中有一條繼承規則可能會讓維運人員感到意外:add_header較低配置等級的指令會改變正常的繼承行為。如果巢狀location區塊定義了自己的add_header指令,則伺服器層級的 HSTS 標頭可能無法再從該層繼承。請檢查目前配置並使用代表性 URL 進行測試,包括登入頁面和靜態資源。請參閱Nginx 標頭模組的官方文件。

在應用更改之前,請執行命令sudo nginx -t。如果驗證成功,請使用系統對應的服務命令重新載入 Nginx(通常為sudo systemctl reload nginx)。如果語法測試失敗,則應在重新載入之前進行修正。

配置反向代理或TLS終止器

如果公用 HTTPS 連線終止於反向代理,請將 HSTS 標頭新增至該代理程式的 HTTPS 回應。例如,即使代理程式與 Nextcloud 後端的連線使用 HTTP,它也可能會傳送 HSTS 標頭。不要僅在未加密的後端回應中發送 HSTS 標頭,並假設瀏覽器能夠識別它。

檢查代理程式和後端是否都已新增相同的標頭。重複的 HSTS 欄位可能難以診斷,代理程式可能會覆蓋或隱藏後端標頭。選擇一個面向公眾的層來管理該策略,或刻意配置各層,使瀏覽器接收到一個清晰的值。更改代理程式後,確認它是否將預期的主機和協定轉送到 Nextcloud,並且 HTTPS 連結仍然有效。

核實公眾反應

請使用向公用 HTTPS 主機名稱發出的請求,而不要僅使用本機或後端位址:

curl -sSI https://cloud.example.com
curl -sSIL http://cloud.example.com

在第一個回應中,找出與以下內容完全相同的標頭:

Strict-Transport-Security: max-age=15552000

第二條指令執行重定向。確認 HTTP URL 指向目標 HTTPS 主機名,然後檢查 HTTPS 回應中是否存在 HSTS。瀏覽器會忽略透過純 HTTP 接收到的 HSTS,因此初始連接埠 80 重定向中無需包含該標頭。您也可以使用瀏覽器開發者工具:開啟「網頁」面板,重新載入 HTTPS 頁面,選擇文件回應,然後檢查回應標頭。

如果您的配置包含巢狀位置、多個代理層級或單獨的靜態資源處理,請檢查多個回應路徑。然後重新造訪 Nextcloud 的管理設定並刷新其安全概覽。警告訊息可能需要一些時間才能刷新,或者可能反映的是 Nextcloud 探測到的確切公共 URL,因此請將該 URL 與您測試的 URL 進行比較。

仔細選擇保險範圍和保險期限。

秒數max-age等於15552000六個月,與 Nextcloud 文件中規定的警告閾值相符。當瀏覽器收到新的有效 HSTS 標頭時,該策略將會更新。之後縮短或移除該策略需要max-age=0透過 HTTPS 向每個受影響的主機名稱傳送請求;在變更期間未重新存取的瀏覽器將保留其快取的策略,直到其目前有效期到期。

includeSubDomains此策略應用於主機名稱下的所有子網域。僅當所有目前和計劃中的子網域都支援 HTTPS 並具有有效憑證時才使用此策略。如果尚未準備就緒,則諸如 HTTPS 或 HTTPS 之類的獨立服務可能無法被瀏覽器存取mail.example.com。legacy.example.com

令牌preload是一個獨立的、影響重大的決策。 Nextcloud 的安全加固指南描述如何將主機名稱添加到瀏覽器預先載入清單中,並警告說,移除該主機名稱可能需要數月時間才能影響已安裝的瀏覽器。請勿將其作為快速清除掃描器發現問題的手段。請先確認所有必需的預載條件以及對每個子網域的影響;如果您打算申請添加,請遵循官方的HSTS 預載服務指南。

如果警告仍然存在

  • curl 請求頭缺失:您可能編輯了錯誤的虛擬主機、代理程式或 Nginx 設定。請檢查公共 DNS 目標和活動伺服器配置。
  • 標頭僅出現在某些頁面:請檢查嵌套的 Nginxadd_header指令、錯誤處理、靜態資源路徑和代理規則。
  • 回應包含多個策略:找出哪些層添加了該字段,並將它們合併為一個一致的值。
  • 標頭已存在,但警告仍然存在:請驗證 Nextcloud 的外部設定 URL 是否解析到相同的 HTTPS 端點,檢查代理方案處理,然後重新載入管理概覽。
  • HTTPS 或憑證尚未準備就緒:請先修復 TLS 和 HTTP 到 HTTPS 的路由。 HSTS 無法自行修復損壞的憑證或啟用 HTTPS。

當公共 HTTPS 回應始終包含預期的 HSTS 值,Nextcloud 可以正確存取其公共 HTTPS URL,且瀏覽器可以載入實例而不會出現憑證或重定向錯誤時,修復即完成。 HSTS 改進了返回瀏覽器的傳輸策略執行,但它並不能取代憑證維護、安全代理程式配置或經過測試的復原路徑。

留下評論

10 款最佳 Ping 掃描工具,協助您尋找網路上的設備

10 款最佳 Ping 掃描工具,協助您尋找網路上的設備

比較 10 款 ping 掃描工具,它們可用於快速發現區域網路、跨平台掃描和 IP 位址管理。了解掃描可以告訴您什麼,以及不能告訴您什麼。

用於追蹤效能的 6 款最佳網路管理工具

用於追蹤效能的 6 款最佳網路管理工具

比較六款網路管理工具的效能監控功能,包括 SNMP 覆蓋範圍、映射、警報、部署模型和成本權衡。

適用於 Windows、iOS 和 Android 的最佳 Wi-Fi 分析器

適用於 Windows、iOS 和 Android 的最佳 Wi-Fi 分析器

比較適用於 Windows、iPhone 和 Android 的 Wi-Fi 分析器,包括頻道擁塞、訊號覆蓋範圍、熱圖和網路故障排除工具。

Ping 監控:7 款免費開源的網路可用性工具

Ping 監控:7 款免費開源的網路可用性工具

比較七款免費開源的 ping 監視器,從完整的網路套件到專注於延遲探測的工具,選擇最適合可用性、丟包率和歷史記錄的工具。

網路中的服務品質 (QoS):服務品質的角色和工作原理

網路中的服務品質 (QoS):服務品質的角色和工作原理

了解 QoS 在網路中的意義,DSCP 標記和流量佇列如何對語音、視訊和業務應用程式進行優先排序,以及 QoS 無法解決的問題。

最佳SFTP伺服器軟體,實現安全檔案傳輸

最佳SFTP伺服器軟體,實現安全檔案傳輸

比較適用於 Windows 和 Linux 的可靠 SFTP 伺服器軟體,包括 OpenSSH、Bitvise、SolarWinds 和 SFTPGo。尋找最適合您的安全性和文件傳輸需求的軟體。

適用於網路團隊的 7 款最佳 IP 位址管理工具

適用於網路團隊的 7 款最佳 IP 位址管理工具

比較七款 IP 位址管理工具,包括子網路發現、DNS 和 DHCP 協調、網路清單和開源 IPAM。

網路監控最佳實務:監控哪些內容以及使用哪些工具

網路監控最佳實務:監控哪些內容以及使用哪些工具

建置實用的網路監控,提供清晰的設備覆蓋範圍、有用的效能指標、可操作的警報,並對 SolarWinds NPM、PRTG 和 OpManager 進行比較。

十大最佳網路掃描工具,幫助您發現裝置和 IP 位址

十大最佳網路掃描工具,幫助您發現裝置和 IP 位址

比較網路掃描工具,以實現快速設備發現、跨平台 IP 掃描和企業級 IPAM,並指導如何將每個選項與您的網路相符。

如何使用 Nmap 進行路由追蹤並讀取網路路徑

如何使用 Nmap 進行路由追蹤並讀取網路路徑

使用 Nmap 的 --traceroute 選項將躍點對應到授權主機,了解躍點和 RTT 輸出,並在不進行過度掃描的情況下排查缺失的回應。