问题描述
我正在尝试运行在Android上运行的Spark(sparkjava.com)服务器应用程序。该服务器需要对HTTPS的支持。我正在使用Spark 2.9.2。
secure(“ / sdcard / oursecurity / 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支持的密钥库类型。 li>
- 重建类并创建一个新的修改后的Spark jar。
- 使用此新的经过修改的Spark jar重建我的应用程序。
我正在考虑使用BKS或PKCS12作为密钥库类型。
其他人是否在支持HTTPS请求的Android上成功运行Spark服务器?如果是这样,任何建议将不胜感激。
解决方法
自Java 8附带JEP-229以来,Java运行时的默认密钥库类型为PKCS12。
我想,如果Spark的secure(...)
方法也接受了密钥库类型的参数,那将是有意义的。也许您应该检查他们的issue tracker是否对这方面的贡献感兴趣。