
我使用的是 Apache 2.2.4 版本。我已經知道這個版本只支援 SSLv2、SSLv3 和 TLSv1.0,但是當我使用它時會發生一些奇怪的事情:
停用 SSLv2 時,Web 瀏覽器(本例中為 Internet Explorer)使用 SSLv3
SSL 3.0、168 位元加密的 3DES(高);具有 2048 位元交換的 RSA。
當我啟用 SSLv2 時,Web 瀏覽器使用 TLSv1.0:
TLS 1.0、256 位元加密的 AES(高);具有 2048 位元交換的 RSA
最後,當我停用這兩個協定(SSLv2 和 v3)時,網頁根本無法載入!
我對 Apache 使用了這個配置:
SSLProtocol all
SSLCipherSuite all
您能為我解釋一下嗎?如何在不啟用 SSLv2 的情況下使用 TLSv1.0?
答案1
此行為是由 TLS v1 RFC 的原始規範引起的(RFC 2246,「E. SSL 向後相容性」部分)。
基本上這個 RFC 聲明大多數伺服器不會對不同版本的 SSL/TLS 使用不同的偵聽連接埠。因此,為了確保向後相容性,建議軟體首先使用「舊」SSL hello 訊息啟動連接,然後在雙方都支持時將連接升級到 TLS,並且切勿嘗試直接使用 TLS 建立連接(「TLS 1.0」)支持SSL 版本2.0 伺服器的用戶端必須傳送SSL 版本2.0 用戶端問候訊息」)。
先前版本的 Java (JRE5) 曾經有此行為,新版本對此進行了改進,現在直接處理 TLS 握手。也許您應該檢查瀏覽器版本和補丁級別,並檢查在瀏覽器端禁用 SSLv2 後此行為是否仍然存在。