2015-01-15 24 views
0

我正在使用JSSE在Java中開發安全聊天程序。什麼是在Java中使用密鑰庫進行SSL握手的正確設置

要讓2個人進行通信,請指定要使用的密鑰庫,例如, Bob將與bob.keystore啓動程序和愛麗絲將啓動程序與alice.keystore

我有它的設置和工作情況如下

在Bob的一側的方式,他已經有他的密鑰對,有一個密鑰Alice的證書作爲可信任證書導入。

在Alices方面,她有一個密鑰庫,她的密鑰對和Bob的證書作爲可信證書導入。

這是正確的設置/程序嗎?

回答

0

在Bob身邊,他有一個密鑰存儲庫,它有他的密鑰對並將Alice的證書作爲可信證書導入。

鮑勃應該有:

  • 一個密鑰庫包含他的密鑰對和證書
  • 一個信任包含Alice的導出的證書。

在Alices的身邊,她與她的密鑰對和Bob的證書導入爲受信任的證書密鑰庫。

愛麗絲應該有:

  • 一個密鑰庫裏面裝着她的密鑰對和證書
  • 一個信任含有Bob的導出的證書。

這是正確的設置/程序嗎?

不是。密鑰庫是一個包含隱私關鍵數據的寶貴的私人信息。信任庫只包含其他人的證書,所以沒有什麼值得珍惜的。您不應該爲了兩個目的使用相同的物理文件。這就是爲什麼他們在JSSE中分離的原因。

+0

雖然我只能在一個文件中加載,但我將其解析爲命令行參數,純粹是爲了展示當前正在工作的JSSE的調試輸出。如果Alice想要與Bob通信,Alice會將她的密鑰庫加載到程序中,而Bob則將另一方的信任庫(其中包含Bob的證書)加載到該程序中。愛麗絲然後試圖與鮑勃溝通,這將是一個可行的選擇? – roukzz 2015-01-16 16:20:02

+0

爲什麼只能加載一個文件? – EJP 2015-01-21 00:29:33

+0

那麼在main方法中加載密鑰庫文件的代碼是'int arg_length = args。長度; \t \t開關(arg_length){ \t \t殼體2: \t \t \t如果(參數[0] .equalsIgnoreCase( 「/密鑰庫」)){ \t \t \t \t密鑰庫= ARGS [1]; \t \t \t \t File test = new File(keystore); \t \t \t \t如果{ \t \t \t \t \t displayHelpInformation()(test.exists()!); \t \t \t \t} \t \t \t}否則{ \t \t \t \t displayHelpInformation(); \t \t \t} \t \t \t中斷;' – roukzz 2015-01-21 17:26:04