我正在尝试运行一个在Android上运行的Spark(sparkjava.com(服务器应用程序。此服务器需要支持HTTPS。我使用的是Spark 2.9.2。
以下是在Spark中支持HTTPS的安全调用。
secure("/sdcard/orsecurity/keystore.bks","mypassword",null,null(;
当应用程序启动时,它会崩溃,并显示java.security.KeyStoreException:找不到JKS。我在各种帖子中看到,Android不支持JKS密钥库类型。
在调试过程中,我注意到Jetty服务器有一个setKeyStoreType调用,允许用户将密钥库类型从Jetty默认的JKS更改为其他类型。
我的计划是做以下事情:
- 下载Spark 2.9.2源代码
- 在Spark文件/src/main/java/Spark/embeddedserver/jetty/SocketConnectorFactory.java的createSecureSocketConnector方法中,调用sslContextFactory.setKeyStoreType(AndroidSupportKeystoreType(将密钥库类型切换为Android支持的密钥库类型
- 重新生成类并创建一个新的修改过的Spark jar
- 用这个新修改的Spark jar重新构建我的应用程序
我正在考虑使用BKS或PKCS12作为密钥存储类型。
是否有其他人在Android上成功运行了支持HTTPS请求的Spark服务器?如果是,任何建议都将不胜感激。
由于Java 8附带的JEP-229,Java运行时的默认密钥库类型是PKCS12。
如果Spark的secure(...)
方法也接受密钥库类型的参数,我想这是有意义的。如果他们对此感兴趣,也许你应该查看他们的问题跟踪器。