java - 在 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 更改为其他类型。
我的计划是执行以下操作:
- 下载 Spark 2.9.2 源代码。
- 在Spark文件/src/main/java/spark/embeddedserver/jetty/SocketConnectorFactory.java的createSecureSocketConnector方法中,调用sslContextFactory.setKeyStoreType(AndroidSupportKeystoreType)将keystore类型切换为Android支持的keystore类型。
- 重建类并创建一个新的修改过的 Spark jar。
- 使用这个新修改的 Spark jar 重建我的应用程序。
我正在考虑使用 BKS 或 PKCS12 作为密钥库类型。
有没有其他人在支持 HTTPS 请求的 Android 上成功运行 Spark 服务器?如果是这样,任何建议将不胜感激。
解决方案
自Java 8 附带的JEP-229以来,Java 运行时的默认密钥库类型是 PKCS12。
secure(...)
我想如果Spark 的方法也接受密钥库类型的参数,那将是有意义的。如果他们有兴趣为此做出贡献,也许您应该查看他们的问题跟踪器。
推荐阅读
- c# - 如何在 Visual Studio 中为 akka.net 调用获取调用堆栈
- node.js - 如何使 nodeJS http 服务器可从外部访问?
- javascript - $merge:如何在 $merge 管道之后返回合并的文档
- javascript - 更改 this.state.prop 的 setState 方法不起作用
- python - 有没有办法在 python 中实现“raspistill -fli auto”?
- jira - JIRA:通过脚本\Rest Endpoint 更新发布描述
- spring-boot - Spring Boot - WebApplicationInitializer 未加载 EventListener(Tomcat 未嵌入)
- .net - 来自 window.open() 锚点的 WebView2 NewWindowRequested 缺少 windowName
- html - 必需的属性在 HTML 输入标记中不起作用
- javascript - 了解包装组件的道具