我正在开发(尤其是部署)一个客户端服务器应用程序的最后一步,其中我使用TLS进行了安全连接。我已经为客户端和服务器获取了密钥库和信任库,目前我在创建SSLSocket / SSLServerSocket之前将它们作为SystemProperties加载,代码如下:
Properties systemProperties = System.getProperties();
systemProperties.put("javax.net.ssl.keyStore", "./auth/labkey.jks");
systemProperties.put("javax.net.ssl.keyStorePassword", "<somepassword>");
systemProperties.put("javax.net.ssl.trustStore", "./auth/labtrust.jks");
systemProperties.put("javax.net.ssl.trustStorePassword", "<somepassword>");
System.setProperties(systemProperties);
这在使用时很好,但正如我之前想的那样,在将所有内容打包成 .jar 文件时就无法使用了。目前,我的项目文件夹包括一个普通的 src 文件夹,其中我保存了所有带有源代码文件的包。密钥库和信任库保存在一个名为“auth”的文件夹中,该文件夹与 src 文件夹处于同一级别。
我知道从以前的项目中,当打包附加文件到 .jar 中时,相对路径会更改,但是首先我不知道我应该如何正确地处理这些文件,使它们被打包到 .jar 中(当前只有在源文件夹中为它们创建包或声明 auth 文件夹为其他源文件夹时才包含它们)。
我尝试了两种方法,并测试了很多不同的相对路径(这是第二个问题:找到合适的相对路径),但我无法弄清楚如何正确地引用它们。
非常感谢任何建议或提示。
编辑:
在上下文中尝试了几件事情后,我可以将问题缩小到 keystore 和 truststore 文件的路径是我的实际问题。 我很确定如果我能够相对地访问它们,那么会有一个可以使用的选项,但是为了访问这些文件,我必须以任何方式提供路径,无论我使用哪种方法。 我无法获得正确的相对文件路径是主要问题,我需要解决这个问题。
因此,以下问题浮现在我的脑海中:
- 我如何将这些文件正确添加到 .jar 中?
- 我需要将 auth 文件夹作为源文件夹还是需要将其放在包中,或者有没有必要或可能通过配置构建路径来正确地配置这些文件?
- 然后文件的相对路径将是什么?