如果不啟用 sslv2,TLSv1 將無法運作

如果不啟用 sslv2,TLSv1 將無法運作

我使用的是 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 後此行為是否仍然存在。

相關內容