我有一個允許通過SLLSockets進行文件共享的Java應用程序(部署爲JAR文件)。如果所有用戶使用相同的證書,則文件傳輸不安全,因爲它違反了非對稱加密通信的核心概念。因此,我明白每個用戶都需要擁有自己的證書。這帶來了我的第一個問題:部署Java應用程序時處理安全
- 如何以編程方式生成證書,以及在哪裏存儲它?我不希望用戶必須使用keytool生成自己的證書,然後必須告訴應用程序所在的位置。
現在,讓我們說我的第一個問題是回答,每個用戶都有自己的證書。在打開兩臺主機之間的SSL連接之前,需要將對方的證書添加到trustStore。我知道實現這一點的唯一方法是通過套接字交換它們(請注意,我正在使用JGroups來交換套接字連接信息)。這帶來了我的下兩個問題:
- 如何在交換證書時保證身份驗證和完整性?
- 如何以編程方式將接收到的證書添加到trustStore?
最後,這整個交帶來了我的第四個問題:
- 是,使用SSLSocket的非對稱加密的兩臺主機之間安全地發送數據的正確方法上面描述的步驟溝通?
1.您的威脅模型是什麼? (誰,你保護什麼東西)。 2.你確定你需要客戶證書嗎? 3.你可以使用智能卡嗎? –
1. MIM試圖獲取文件 2.嗯,我會假設使用SSL是安全傳輸數據的最佳方式。我怎麼會沒有證書? 3.你是指可以通過閱讀器讀取的物理卡片嗎?這對於這個應用來說似乎太複雜了。這是一個簡單的局域網文件共享應用程序,但安全性非常重要,無論上下文,恕我直言。 – user3856210
這是一個客戶端服務器應用程序還是點對點? –