2013-04-25 81 views
0

我想要一個程序來驗證使用Oracle的SSLSocket類創建SSL套接字。在我的程序中,我希望客戶端通過其證書(使用Keytool創建)。服務器應驗證證書,然後繼續進行通信。我希望服務器檢查連接到它的每個客戶端的證書。假設所有密鑰(服務器和客戶端)都存儲在Keystore中。我如何實現這一點?如何使用Keytool驗證證書?

編輯:

原諒我,如果我不能正確地傳達我的問題。我是新來的。我正在閱讀this link以獲得一些指導。在這裏,當讀取密鑰庫時,服務器直接對客戶端的密鑰文件名(即「client.public」)進行硬編碼。但是,在我的程序中,這將由客戶端指定,因爲服務器事先不知道客戶端的公鑰文件名是什麼。

回答

1

您剛剛描述了幕後發生的事情。您只需創建一個SSLServerSocket並將needClientAuth設置爲true,並像往常一樣開始接受它的連接。 JSSE將完成剩下的工作。

+0

假設我有10個客戶端連接到服務器。服務器如何知道向CA請求哪個客戶端的證書(在這種情況下,由於Keytool將管理所有證書)?你能給一些參考嗎? – TheRookierLearner 2013-04-25 22:53:44

+0

我不明白這個問題。客戶端連接,發送其證書,服務器讀取證書並根據信任存儲進行檢查。爲每個客戶。每個連接。 – EJP 2013-04-25 23:20:47

+0

請參閱編輯。 – TheRookierLearner 2013-04-25 23:45:26