在项目中包含信任库文件的位置
我正在尝试了解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")
尝试了相同的方法但它仍然保持返回找不到的文件。 任何帮助都会很棒! 谢谢!
- 将密钥库作为资源包含在JAR文件中,就像对图像所做的那样。
- 通过
getResourceAsStream().
访问它getResourceAsStream().
- 使用该
InputStream
加载KeyStore.
- 使用
KeyStore
初始化TrustManager.
- 使用
TrustManager
初始化SSLContext.
- 使用
SSLContext
创建SSLSocketFactory.
- 使用
SSLSocketFactory
创建SSLSocket.