我們在 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 -reconnect
或gnutls-cli -Vr
測試 SSL 會話快取。我相信他們只回答了部分問題:因為這兩個程序斷開然後重新連接,他們僅確認 SSL 會話已快取並且可以重複使用依序地,但他們不檢查快取的 SSL 會話是否可以使用同時由多個分叉伺服器傳送到同一個客戶端。這實際上是現代瀏覽器從 HTTPS 網站提取資源時的典型使用場景)。
為了檢查快取的 SSL 會話是否可以同時使用,在使用相同的 SSL 會話 ID/金鑰開啟下一個測試連線之前,不得關閉第一個測試連線。不幸的是,這兩家公用事業公司似乎都沒有這樣的選擇。
答案1
您可以使用 SSL 分析網站之一(例如Qualys 的 SSL 伺服器測試)。尋找“會話恢復測試”的結果:如果它顯示“是”,則您的會話快取正在工作。