2016-09-16 118 views
0

這與我的other question about DH parameters(它沒有得到任何答案)基本相同,但我有興趣獲取有關在此期間發送的TLS服務器密鑰交換消息的信息TLS握手。TLS服務器密鑰交換消息的詳細信息

這些消息或來自它們的信息(如談判臨時密鑰)是否可以通過Java API使用?我正在使用Java SSLSocketFactory獲取SSLSocket,然後使用它進行連接;有沒有其他的API(如Apache的HTTP客戶端),我必須突破以達到這個水平。

我只是不確定Java是否公開這些信息。我嘗試使用HandshakeCompletedListener,但似乎沒有提供任何我想要的信息。

有誰知道如果/如何做到這一點?

+0

這些消息不能通過Java API獲得,但生成的密碼套件可通過SSLSession獲取。 – EJP

+0

@EJP我不難找到密碼套件 - 這很容易。我無法獲取*密鑰交換的詳細信息*。例如,當使用DHE密鑰交換時,我希望獲得連接的臨時密鑰。這不是密碼套件定義的一部分。 –

回答

0

消息不可通過API獲得,但是您可以使用libpcap捕獲數據包,然後通過握手數據進行解析並將其存儲在程序中。

繼參考文獻http://download.java.net/jdk7/archive/b123/docs/api/javax/net/ssl/SSLSocket.html 我不認爲有可能從API打印DH參數。

+0

訴諸使用'libpcap'並不是一個真正的選擇,但感謝創造性的建議。 :) –

+0

你有沒有嘗試檢查Java調試選項http://docs.oracle.com/javase/7/docs/technotes/guides/security/jsse/ReadDebug.html – 2016-09-18 18:57:16

+0

是的,我讀過,但它只是轉儲到'stderr'。讀'stderr'也是一種不好的技術。我可能只需要讓這一個去。 :( –