我們有一個SSL問題,我99%,這不是你通常的證書信任存儲區旋轉木馬。間歇性SSL握手錯誤
我們有一個Weblogic服務器試圖通過LDAPS與Active Directory建立SSL連接,底層SSL實現是JSSE。
有些時候,它的工作原理。通常在重新啓動Weblogic幾個小時後。
在這之後,我們開始越來越SSL握手錯誤,與SSL調試打開,我們看到:
[活動] ExecuteThread: '10' 的隊列:「weblogic.kernel.Default (自整定) '處理異常:java.net.SocketException: Connection reset [ACTIVE] ExecuteThread:'10'for隊列: 'weblogic.kernel.Default(self-tuning)',SEND TLSv1 ALERT:fatal, description = unexpected_message [ ACTIVE] ExecuteThread:'10'for 隊列:'weblogic.kernel.Default(self-tuning)',WRITE:TLSv1 Alert, length = 32 [ACTIVE] ExecuteThread:'10 「隊列: ‘weblogic.kernel.Default(自整定)’,異常發送報警: java.net.SocketException異常:殘破的管道
到目前爲止,我曾嘗試以下理解/複製它:
- 通過OpenSSL的連接與加載的證書 - 工程確定每次
- 通過與裝載證書安全ldapsearch的連接 - 每次
- 通過自定義測試Java客戶端連接工程確定 - 每次工作確定
- 使用Wireshark和私鑰解密SSL握手。
我注意到Wireshark的「壞」手搖是在客戶端發送更改密碼規格後,完成的消息AD不會以實物回覆。更何況,Wireshark的不能解密SSL握手,與失敗:
ssl_decrypt_pre_master_secret錯誤pre_master_secret長度(109, 預計48)dissect_ssl3_handshake無法解密預主祕密
注Wireshark的SSL解密完美的作品當SSL握手完美工作時。
直到AD服務器沒有響應的時候,我纔看到好的和不好的SSL握手的任何顯着差異。
在這一點上,我很困難...我真的很難理解爲什麼這會在一段時間內失敗,剩下的工作,在這一點上,我真的只是希望有什麼建議正在繼續。
哦,是的,差點忘了。有在Active Directory事件日誌中的錯誤:
事件ID:36888以下致命警報是由:20的 國家內部誤差爲960。
其中,經過一些研究,我設法發現對應於SSL「BAD_RECORD_MAC」錯誤。
我現在唯一的理論是,由於某種原因,錯誤的公鑰被用於加密握手...我看不到爲什麼服務器(和Wireshark)將無法解密完成的消息。
謝謝!
更新:
我比較壞的和良好的情況下,在這兩種情況下的密碼規格是一樣的:TLS_RSA_WITH_AES_128_CBC_SHA。我還比較了來自客戶端和服務器端的數據包,除了正常的以太網和IP協議差異外,它們看起來都是相同的。
這很難從提供的數據中診斷出來。我建議從證書子系統和網絡嗅探並行(例如wireshark或類似的)獲得一些日誌記錄。這會幫助... – 2012-08-23 20:47:32