在Android上安全运行的Spark服务器是否可以正常工作?

问题描述

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

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

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

启动应用程序时,它将崩溃并显示java.security.KeyStoreException:找不到JKS。 我在各种文章中看到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)将密钥库类型切换为Android支持的密钥库类型。
  3. li>
  4. 重建类并创建一个新的修改后的Spark jar。
  5. 使用此新的经过修改的Spark jar重建我的应用程序。

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

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

解决方法

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

我想,如果Spark的secure(...)方法也接受了密钥库类型的参数,那将是有意义的。也许您应该检查他们的issue tracker是否对这方面的贡献感兴趣。