【发布时间】:2012-10-23 16:25:27
【问题描述】:
好的,所以我被扔进了战壕,想以最干净最体面的方式离开。
目前我有 2 个 Android 项目,我需要在一个项目中打包一个文件,并让它被另一个项目成功读取。这可能会令人困惑,所以让我解释一下。
我有 2 个 Android 项目。一个名为 Engine 的 android 库项目和应用程序本身。
引擎处理网络通信和许多其他后台任务,这些任务无头运行且不与 UI 交互。引擎可以访问主应用程序的上下文,但没有其他权限。在我开发这个引擎的过程中,我遇到了一些有趣的事情。 Https(不要逃跑)以及它在android应用程序中出现的问题。有很多关于 android 应用程序如何非常不安全并且极易受到 MITM 攻击的博客文章。这是我在这个引擎中不能忽视的一个问题,因为它是一个非常现实的威胁。
如需更多阅读,我强烈推荐 Nikolay Elenkov 的 blog,因为他解释了在 Android 上实现安全的好方法!
我离题了,因为这个问题已经解决了。我的解决方案是使用存储在 .bks 文件中的自定义密钥库。同样,您无需担心它是如何创建的或将如何创建的。真正的麻烦是,当它被打包在一个 JAR 中时,我如何读取这个文件。
对于最终版本,引擎将打包为 jar 并包含在应用程序中。 将引擎打包到 jar 中的警告是 res 文件夹中的任何内容都不会被编译并且无法读取。根据定义,无论项目是 jar 还是库项目,库项目中的任何资产都将无法访问。
回顾一下,我们有 2 个项目。一个 Packaged Jar Android 库,其中包含我们的 BKS 文件和一个需要读取它的应用程序。
如果 BKS 文件位于 assets/ 或 res/ 文件夹中,则无法恢复它。
有没有人知道如何访问这个文件?
可能的解决方案:
将文件存入lib目录并读取?
将 BKS 存储在远程服务器上并在启动时加载?
寻找另一种处理 ssl 证书的方法(不,我不会只接受任何和所有证书!)
有一种超级秘密的方法可以读取另一个文件夹中的 android 库项目中的文件,这是你如何做到的......
【问题讨论】:
标签: android ssl https io bouncycastle