2015-06-17 69 views
0

我有一個允許通過SLLSockets進行文件共享的Java應用程序(部署爲JAR文件)。如果所有用戶使用相同的證書,則文件傳輸不安全,因爲它違反了非對稱加密通信的核心概念。因此,我明白每個用戶都需要擁有自己的證書。這帶來了我的第一個問題:部署Java應用程序時處理安全

  1. 如何以編程方式生成證書,以及在哪裏存儲它?我不希望用戶必須使用keytool生成自己的證書,然後必須告訴應用程序所在的位置。

現在,讓我們說我的第一個問題是回答,每個用戶都有自己的證書。在打開兩臺主機之間的SSL連接之前,需要將對方的證書添加到trustStore。我知道實現這一點的唯一方法是通過套接字交換它們(請注意,我正在使用JGroups來交換套接字連接信息)。這帶來了我的下兩個問題:

  1. 如何在交換證書時保證身份驗證和完整性?
  2. 如何以編程方式將接收到的證書添加到trustStore?

最後,這整個交帶來了我的第四個問題:

  • 是,使用SSLSocket的非對稱加密的兩臺主機之間安全地發送數據的正確方法上面描述的步驟溝通?
  • +0

    1.您的威脅模型是什麼? (誰,你保護什麼東西)。 2.你確定你需要客戶證書嗎? 3.你可以使用智能卡嗎? –

    +0

    1. MIM試圖獲取文件 2.嗯,我會假設使用SSL是安全傳輸數據的最佳方式。我怎麼會沒有證書? 3.你是指可以通過閱讀器讀取的物理卡片嗎?這對於這個應用來說似乎太複雜了。這是一個簡單的局域網文件共享應用程序,但安全性非常重要,無論上下文,恕我直言。 – user3856210

    +0

    這是一個客戶端服務器應用程序還是點對點? –

    回答

    2

    您不需要客戶端證書。

    你不能使用用戶名/密碼認證嗎?

    只需使用服務器證書即可保證傳輸的安全。

    客戶證書也是一種痛苦,並不完全安全。他們把你綁在一臺機器上,邪惡的進程可以讀取它們。智能卡可以緩解這種情況,但不是免費的。

    +0

    用戶名/密碼會讓我覺得有點痛苦。這意味着一個LAN上的快速文件共享應用程序。雖然威脅不是什麼大問題,但我想阻止MITM監聽文件傳輸,並僞造別人。 智能卡肯定不會成爲一種選擇,因爲這是一個開源和免費的項目。 通過在每個用戶的屏幕上顯示一個簡短代碼,DES加密文件傳輸以及傳輸前Diffie-Hellman身份驗證如何,他們都應該確保代碼相同?那種手機-PC同步技術。 – user3856210

    相關問題