Apache 2.4.65 CVE 修正:解決 Zoraxy 代理伺服器 SSL 連線問題
TL;DR
- 受影響版本:Apache 2.4.65 在更嚴格的 SNI 驗證下,後端 HTTPS 如未收到 SNI,會拒絕連線並回應 421。
- 受影響代理版本:Zoraxy v3.2.5(預設不向上游傳遞 SNI)。
- 其他易受影響場景:Nginx 未啟用上游 SNI、Cloudflare 代理到 Apache 且來源主機名與憑證/SNI 不一致。
- 快速解法(推薦暫時避險):降級到 2.4.62 並
apt-mark hold
;待上游修復再解除鎖定升回新版本。 - 進階解法:維持 2.4.65,於代理層正確傳遞 SNI;或在 Apache 虛擬主機中調整 SNI 嚴格檢查(有安全風險)。
🚨 問題概述
最近 Apache 2.4.65 版本發布了重要的安全性修正,但這些修正意外地影響了使用 Zoraxy 等代理伺服器的環境。如果您在使用 Zoraxy 作為反向代理時遇到 SSL 連線問題,這篇文章將為您提供完整的解決方案。
影響範圍與問題根源
Apache 2.4.65 中的 CVE 修正引入了更嚴格的 SSL 驗證機制,要求所有連線都必須提供正確的伺服器名稱(Server Name Indication, SNI)。然而,部分反向代理(包含 Zoraxy 的預設行為)在連線到後端 HTTPS 伺服器時不會傳遞 SNI,導致 Apache 拒絕處理這些請求並回應 421。
其他常見影響情境:
- Nginx 到上游 Apache 使用 HTTPS,但未設定
proxy_ssl_server_name on;
(或 SNI 名稱與目標憑證不符)。 - Cloudflare 橘雲代理到 Apache:若來源請求的主機名與 Apache 憑證/虛擬主機不匹配,或透過 IP/替代主機名連回來源導致 SNI/Host 不一致。
常見錯誤樣貌
- 瀏覽器顯示:421 Misdirected Request
curl
測試:
|
|
- Apache 錯誤日誌(可能類似):
|
|
🔍 診斷問題
在開始修正之前,讓我們先確認您是否遇到這個問題:
檢查 Apache 版本
|
|
如果您的輸出類似以下內容,表示您正在使用受影響的版本:
|
|
檢查可用的 Apache 版本
|
|
您應該會看到類似以下的輸出:
|
|
🛠️ 解決方案
方案一:降級到 Apache 2.4.62(推薦)
這是最直接且穩定的解決方案,因為 2.4.62 版本沒有這個問題:
步驟 1:更新套件清單
|
|
步驟 2:降級 Apache 到 2.4.62
|
|
步驟 3:防止自動更新
為了避免系統自動更新回 2.4.65,建議鎖定 Apache 版本:
|
|
步驟 4:驗證降級成功
|
|
您應該會看到:
|
|
步驟 5:需要升回新版本時(解除鎖定與升級)
|
|
方案二:修改 Apache 設定(進階)
如果您必須使用 Apache 2.4.65,可以嘗試修改設定來繞過或緩解這個限制:
在 VirtualHost 中新增設定
|
|
⚠️ 注意:此作法會降低安全性且可能違反原本的硬化目的,僅建議做為短期過渡方案。
🔧 其他代理伺服器的修正方法
Nginx 修正
如果您使用 Nginx 作為代理伺服器,修正方法相對簡單:
自動修正指令
|
|
手動設定
在 /etc/nginx/conf.d/fixssl.conf
中新增:
|
|
然後重新啟動 Nginx:
|
|
Cloudflare 修正
- 確保 DNS 記錄代理(橘雲)所對應的主機名,能對應到 Apache 上的對應
ServerName
/ServerAlias
,且伺服器憑證涵蓋該主機名。 - 避免以純 IP 或與憑證不符的來源主機名作為回源目標;必要時於來源伺服器設定正確的對應主機名。
- 若有使用「回源主機名覆寫」類功能(例如特定負載平衡/規則引擎),請確保實際回源的 SNI 與 Host 與 Apache 憑證一致。
- 如需短期權衡,可暫時將來源連線模式調整為與現況相容的 SSL 驗證模式,但建議仍以修正 SNI/主機名一致性為長期方案。
Zoraxy 修正(概念)
- 若作為反向代理,請確認向後端 HTTPS 連線時會帶上正確的 SNI(一般為上游主機名)。
- 若目前版本無法設定,暫以「降級後端 Apache」或「改由 Nginx 代理並啟用
proxy_ssl_server_name
」作為權衡。
📋 最佳實踐建議
1. 定期備份設定
在進行任何系統修改之前,請務必備份您的 Apache 設定:
|
|
2. 監控系統日誌
修正後,請監控 Apache 錯誤日誌以確保一切正常:
|
|
也建議同時監控代理層(如 Nginx/Zoraxy)的日誌,以便比對端到端的請求行為。
3. 測試連線
使用以下指令測試您的網站是否正常運作:
|
|
4. 考慮長期解決方案
- 關注 Apache 官方更新,等待更完善的修正
- 考慮升級 Zoraxy 到支援 SNI 的版本
- 評估是否需要更換代理解決方案
🚀 結論
Apache 2.4.65 的 CVE 修正雖然提高了安全性,但對某些代理設定造成了相容性問題。透過降級到 2.4.62 版本,您可以立即解決這個問題,同時保持系統的穩定性。
記住,安全性更新很重要,但在生產環境中,穩定性同樣重要。在等待更完善的解決方案時,降級是一個合理的選擇。
參考資料
- Apache HTTP Server mod_ssl 指令說明(
SSLStrictSNIVHostCheck
):官方文件 - Nginx
proxy_ssl_server_name
與proxy_ssl_name
:官方文件
免責聲明:本文提供的解決方案僅供參考。在生產環境中實施任何變更之前,請務必在測試環境中進行充分驗證,並確保您了解所有相關風險。