【问题标题】:Does Spark server running secure on Android work?在 Android 上安全运行的 Spark 服务器是否有效?
【发布时间】:2020-12-22 00:56:21
【问题描述】:

我正在尝试运行在 Android 上运行的 Spark (sparkjava.com) 服务器应用程序。此服务器需要支持 HTTPS。我正在使用 Spark 2.9.2。

这是在 Spark 中支持 HTTPS 的安全调用。

secure("/sdcard/oursecurity/keystore.bks", "mypassword", null, null);

当应用程序启动时,它会崩溃并出现 java.security.KeyStoreException: JKS not found。 我在各种帖子中看到 Android 不支持 JKS 密钥库类型。

在调试时,我注意到 Jetty 服务器有一个 setKeyStoreType 调用,允许用户将密钥库类型从 Jetty 的默认 JKS 更改为其他类型。

我的计划是做以下事情:

  1. 下载 Spark 2.9.2 源代码。
  2. 在Spark文件/src/main/java/spark/embeddedserver/jetty/SocketConnectorFactory.java的createSecureSocketConnector方法中,调用sslContextFactory.setKeyStoreType(AndroidSupportKeyStoreType)将keystore类型切换为Android支持的keystore类型。李>
  3. 重建类并创建一个新的修改过的 Spark jar。
  4. 用这个新修改的 Spark jar 重建我的应用程序。

我正在考虑使用 BKS 或 PKCS12 作为密钥库类型。

还有其他人在支持 HTTPS 请求的 Android 上成功运行 Spark 服务器吗?如果是这样,任何建议将不胜感激。

【问题讨论】:

  • 你看到this question了吗?
  • @mthmulders 不,我没有看到这个问题。感谢您指出。不幸的是,我的问题不同。我能够在 Android 中成功运行 Spark。但是,当支持支持 HTTPS 请求所需的“安全”调用时,我无法在 Android 中运行 Spark。希望我可以帮助其他人解决他们的问题。

标签: java android https keystore spark-java


【解决方案1】:

由于JEP-229 随 Java 8 一起提供,Java 运行时的默认密钥库类型是 PKCS12。

我想如果 Spark 的 secure(...) 方法也接受密钥库类型的参数,那将是有意义的。如果他们有兴趣为此做出贡献,也许您应该查看他们的issue tracker

【讨论】:

  • 感谢您提供有关默认密钥库类型和问题跟踪器的信息。我可以看看追踪器。
猜你喜欢
  • 1970-01-01
  • 2013-07-09
  • 1970-01-01
  • 2011-07-08
  • 1970-01-01
  • 1970-01-01
  • 2015-06-02
  • 2021-04-13
  • 2017-04-27
相关资源
最近更新 更多