我有一个 Spark-java 应用程序,它有几个端点。现在我为我的域创建了一个带有 SSL 证书的 keystore 文件。
这是我在 spark 中添加它的方式:
secure("src/deploy/letsencrypt.jks", "mysecretpassword", null, null);
如果我从 intteliJ 内部运行我的应用程序,它能够运行,但是一旦我将我的应用程序打包到 jar 文件中,它就找不到 keystore 文件。我在网上搜索了很多,问题的答案是:使用输入流。现在 spark 只允许您提供路径,而不是输入流。
是否仍然可以通过指定路径从 jar 中访问 keystore 文件?或者这是不可能的 atm 与 spark?
最佳答案
当您将应用程序打包到 jar 文件中时,无法找到 src 路径,因为它已不存在。
在 Intelij IDEA/Project Structure windows/Modules 部分,您可以找到 Resource 目录。您放在 Resource 目录中的每个文件/文件夹都会被复制到 Jar 文件中。
但是在您的代码中对 keyStorePath、keyStoreKey 进行硬编码并不安全。我建议在运行时将这些变量设置为参数。像这样的代码:
String keyStorePath = System.getProperty("app.httpskey.path");
String keyStoreKey = System.getProperty("app.httpskey.key");
if (keyStoreKey != null && keyStorePath != null) {
try {
secure(keyStorePath, keyStoreKey, null, null);
Logger.log("Web server will started in HTTPS mode.");
} catch (Exception e) {
Logger.log(e);
}
}
关于java - Spark-java如何导入带有jar内路径的 keystore 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48487246/