2014-01-17 45 views
0

我正在嘗試瞭解SSL並已成功創建了一個通過SSL連接進行通信的客戶端/服務器程序。我已經生成了我自己的信任庫和密鑰庫文件,我希望我的客戶端和服務器程序可以使用它們。到目前爲止,我可以通過命令行使用下面的命令來運行兩個程序:在項目中包含信任庫文件的位置

java -Djavax.net.ssl.keyStore=mySrvKeystore -Djavax.net.ssl.keyStorePassword=123456 ServerMain.java 

java -Djavax.net.ssl.trustStore=mySrvKeystore -Djavax.net.ssl.trustStorePassword=123456 Client.java 

不過,我想知道是否有實現的可能方法文件以某種方式放到我的項目中,以便將來當我將其構建到.jar文件時,我可以將文件與它捆綁在一起。以前,我通過將它們存儲在我的項目文件夾中的res文件夾中並使用「/res/image.jpg」作爲路徑,並且它工作正常,從而完成了與圖像類似的操作。我已經通過使用System.setProperty("javax.net.ssl.trustStore", "/res/mySrvkeystore.jks")嘗試了相同的方法,但它始終未找到返回的文件。任何幫助將是偉大的!謝謝!

回答

1
  1. 將密鑰庫作爲資源包含在您的JAR文件中,就像您對圖像所做的一樣。
  2. 通過getResourceAsStream().
  3. 使用訪問它是InputStream加載KeyStore.
  4. 使用KeyStore初始化TrustManager.
  5. 使用TrustManager初始化一個SSLContext.
  6. 使用SSLContext創建您SSLSocketFactory.
  7. 使用SSLSocketFactory創建您的SSLSocket.
+0

嗯我從來沒有見過這個東西。你能否向我展示一些示例代碼或者指向我可以在哪裏找到可以幫助我的東西?非常感謝。 –

+0

我設法設置了InputStream並使用它來初始化一個KeyStore。但是,我現在已經失去了如何使用KeyStore來初始化TrustManager。我似乎無法在任何地方找到答案。 –