如何判斷 SSL 會話快取實際上是否在 Apache 2.2 中正常運作?

如何判斷 SSL 會話快取實際上是否在 Apache 2.2 中正常運作?

我們在 Ubuntu 12.04 上執行 Apache 2.2.22。

SSL 已設定並啟用,其中包含以下指令/etc/apache2/mods-enabled/ssl.conf

SSLSessionCache shm:/var/www/apache-ssl-cache/ssl_scache(512000)
SSLSessionCacheTimeout  300
SSLMutex file:/var/www/apache-ssl-cache/ssl_mutex

SSL 似乎有效。我們可以透過 HTTPS 存取該網站,甚至在 Windows XP 上的 IE8 中也是如此。但是,我們不確定 SSL 會話快取是否確實正常運作。

我們在虛擬主機的日誌中看到很多這樣的資訊級訊息:

[info] [client <censored>] (70007)The timeout specified has expired: SSL input filter read failed.

或者

[info] [client <censored>] (70014)End of file found: SSL input filter read failed.

或者

[info] [client <censored>] (70014)End of file found: SSL handshake interrupted by system [Hint: Stop button pressed in browser?!]

PRNG 播種似乎也經常發生。不幸的是,似乎不可能可靠地判斷 PRNG 是為哪個分叉的 apache 子進程播種的:

[info] Seeding PRNG with 656 bytes of entropy

那麼這些訊息是否表示 SSL 會話快取不起作用(跨分叉的 apache 子進程)?

編輯

我發現許多網站提到使用openssl s_client -reconnectgnutls-cli -Vr測試 SSL 會話快取。我相信他們只回答了部分問題:因為這兩個程序斷開然後重新連接,他們僅確認 SSL 會話已快取並且可以重複使用依序地,但他們不檢查快取的 SSL 會話是否可以使用同時由多個分叉伺服器傳送到同一個客戶端。這實際上是現代瀏覽器從 HTTPS 網站提取資源時的典型使用場景)。

為了檢查快取的 SSL 會話是否可以同時使用,在使用相同的 SSL 會話 ID/金鑰開啟下一個測試連線之前,不得關閉第一個測試連線。不幸的是,這兩家公用事業公司似乎都沒有這樣的選擇。

答案1

您可以使用 SSL 分析網站之一(例如Qualys 的 SSL 伺服器測試)。尋找“會話恢復測試”的結果:如果它顯示“是”,則您的會話快取正在工作。

相關內容