在项目中包含信任库文件的位置

时间:2014-01-17 03:28:18

标签: java ssl

我正在尝试了解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 个答案:

答案 0 :(得分:1)

  1. 将密钥库作为资源包含在JAR文件中,就像对图像所做的那样。
  2. 通过getResourceAsStream().
  3. 访问它
  4. 使用InputStream加载KeyStore.
  5. 使用KeyStore初始化TrustManager.
  6. 使用TrustManager初始化SSLContext.
  7. 使用SSLContext创建SSLSocketFactory.
  8. 使用SSLSocketFactory创建SSLSocket.