首页 > 解决方案 > 在 Android 上安全运行的 Spark 服务器是否有效?

问题描述

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

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

安全(“/sdcard/oursecurity/keystore.bks”,“我的密码”,空,空);

当应用程序启动时,它会崩溃并出现 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 服务器?如果是这样,任何建议将不胜感激。

标签: javaandroidhttpskeystorespark-java

解决方案


自Java 8 附带的JEP-229以来,Java 运行时的默认密钥库类型是 PKCS12。

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


推荐阅读