gpt4 book ai didi

java - 如何将 keystore 正确打包到 .jar 文件中

转载 作者:行者123 更新时间:2023-11-30 05:31:59 25 4
gpt4 key购买 nike

我正处于开发(尤其是部署)客户端服务器应用程序的最后一步,我在其中使用 TLS 建立安全连接。我获得了客户端和服务器的 keystore 和信任库,目前我在创建 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 文件夹组成,其中保存了所有包含源代码文件的包。 keystore 和信任库保存在名为“auth”的文件夹中,该文件夹与 src 文件夹位于同一级别。

我从以前的项目中知道,将其他文件打包到 .jar 中时相对路径会发生变化,但是第一件事是我不知道应该如何正确处理这些文件以将它们打包到 .jar 中(目前它们是仅当我在源文件夹中为它们创建包或将 auth 文件夹声明为附加源文件夹时才包含)。

我尝试了这两种方法,并且在测试了很多不同的相对路径(这是第二个问题:找到正确的相对路径)之后,我不知道如何正确解决它们。

任何建议或提示将不胜感激。

<小时/>

编辑:

在根据建议的想法尝试了几件事之后,我可以将问题缩小到 keystore 和信任库文件的路径是我的实际问题。我很确定如果我能够相对地访问它,就会有一个可以使用的选项,但是为了访问我必须的文件,可以提供任何类型的路径,无论我采用哪种方法即将使用。因此,我无法获得文件的正确相对路径,这是我需要解决的主要问题。

因此,我想到了这些问题:

  1. 如何正确地将这些文件添加到 .jar 中?
  2. 我需要将 auth 文件夹设为源文件夹还是需要将其放入包中,或者是否需要或可能通过配置构建路径来正确配置文件?
  3. 文件的相对路径是什么?

最佳答案

快速编辑:这已经在之前的帖子中得到了回答 - 我确信我的解释在这里低于标准,但这最近也出现在我身上,这就是我的解决方案

您可能想使用 getClass().getClassLoader.getResourceAsStream("filename.properties")

    Properties properties = new Properties();
String propertiesFileName = "config.properties";

inputStream = getClass().getClassLoader().getResourceAsStream(propertiesFileName);

if (inputStream != null) {
properties.load(inputStream);
} else {
throw new FileNotFoundException("property file '" + propertiesFileName + "' not found.");
}

关于java - 如何将 keystore 正确打包到 .jar 文件中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57332885/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com