2013-02-27 93 views
0

當使用Java創建SSL連接,我們首先與我們的的KeyStore信任庫初始化的SSLContext。在中的SSLContext javax.net.ssl有一種方法,稱爲createSSLEngine()創建一個SSLEngine。所以當爲連接創建會話時,將使用創建的SSLEngine。我的問題是SSL協議在哪一點使用KeyStore和TrustStore的keyManagers和TrustManagers?SSL中使用的信任存儲和密鑰存儲如何?

在此先感謝。

+1

這些在[JSSE參考指南](http://docs.oracle.com/javase/6/docs/technotes/guides/security/jsse/JSSERefGuide.html)中都有詳細描述。你有什麼問題? – EJP 2013-02-27 09:37:22

+0

我需要知道在SSLEngine中是否實現了Trust存儲的使用?如果是這樣如何?我問這個問題,因爲當我從客戶端獲取證書鏈時,鏈中的根證書必須位於Truststore中才能建立SSL連接。我不確定這是否在Java中的SSL實現中實現。 – Jeewantha 2013-02-27 10:16:04

+1

是的。 SSLEngine執行SSL握手,通過TrustManager驗證對等證書,並使包含對等證書的SSLSession可用於應用程序。這就是爲什麼SSLEngine是由SSLContext創建的,該SSLContext包含KeyManagers和TrustManagers。 – EJP 2013-02-27 21:34:27

回答

1

在SSL握手期間建立相互信任和真實性並創建SSL會話。

對於您的發送問題,如果鏈中至少有一個證書是可信的,則標準JSSE信任管理器將認爲證書鏈是可信的。它不一定是根證書。如果您確信您必須建立根證書的有效性和真實性,則應該實施自定義TrustManager並使用它,而不是默認實現。