Apache-2.2
是否可以使用後端應用程序可以使用的 Apache 設置 SSL/TLS 版本 HTTP 標頭?
在具有專用 IP 的虛擬機上有一項服務需要通過 SSLv3(帶有 IE6 客戶端的 WinXP)進行訪問。幾年前,我將該服務移至該虛擬機,以便能夠為所有其他服務禁用 SSLv3。
我想通知該服務的 SSLv3 客戶端,該服務將在“某個時間”需要 TLS 1.1 或更高版本。該通知不得顯示在任何其他客戶上(業務決策)。
為了實現這一點,我正在考慮將代理 (Apache) 上使用的 SSL/TLS 版本資訊注入到原始 HTTP 請求中,以讓後端應用程序有條件地放置“升級你的系統,恐龍!” 通知基於實際使用的傳輸層安全方法。
如何配置注入?我僅在使用調試標誌編譯 Apache 時才找到所需的環境變數,但這在生產中是不可能的。
最終結果應該是 Apache Proxy 正在註入 HTTP 請求標頭“X-TLS-Version: SSL3”(或“X-TLS-Version: TLS12”或熟悉的語法)。
Apache 的 mod_ssl在啟用該指令時提供了許多環境變數,其中包括 SSL 協議:
SSLOptions
+StdEnvVars
SSL_PROTOCOL
string
SSL 協議版本(SSLv2、SSLv3、TLSv1、TLSv1.1、TLSv1.2)SSLOptions +StdEnvVars SetEnvIf SSL_PROTOCOL "SSLv3" insecure-protocol=true RequestHeader set X-TLS-Version "SSLv3" env=insecure-protocol
要始終使用 SSL 協議設置標頭,以下可能有效:
RequestHeader set X-TLS-Version %{SSL_PROTOCOL}s
這有一個小優勢,對於簡單的場景,您不需要產生成本,但可以直接使用語法
SSLOptions +StdEnvVars
訪問某些 SSL 變數。%{FOOBAR}s
兩者都沒有經過測試。