问题
keystore 及其密码用于对应用进行签名,然后 Android 使用该应用来识别开发者。如果泄露,有人可以代表我们更新相关应用程序。即使此人无权访问我们的 Playstore 帐户,他们仍然可以将其发布到其他地方。
我们随处可见,“永远不会丢失它”,“永远不会泄漏它” 等等。但是如果我这样做了呢?当 keystore 及其密码泄露时,我找不到需要遵循的步骤,因此我可以保护我们的用户和我们的应用程序。
问题
即使我使用另一个 appid 发布同一个应用,我如何保护仍在使用旧应用的用户?这里有一些最佳做法吗?
最佳答案
不幸的是,似乎没有一种很好的方法可以将现有应用程序迁移到新的签名 key 。这可能是最好的,因为最佳实践仍然是 a) 拥有一个强 key b) 尽可能保持您的私有(private)发布 key 的私密性。我找到了 this article概述了一种可行的(但对用户不友好的方式)从 1024 位迁移到 4096 位 key ,这似乎适合您的用例。由于您仍然拥有受感染应用的有效签名 key ,因此您可以尝试通过更新将其从其中迁移出去。
- 生成新的签名 key RSA 4096
- 使用 TrustedIntents 和 Checkey 将为您生成的新 key RSA 4096 的签名 pin 更新第一个应用 App1,使用导出私有(private)数据的机制
- 使用不同的包名称 App2 创建应用的新版本
- 使用新 key RSA 4096 为 App2 签名
- 向 App2 添加用于从 App1 接收用户数据的方法,包括旧签名 key RSA 1024 的签名引脚,以便与 TrustedIntents 一起使用
- 将 App2 发布到应用商店
- 从 App1 提示用户安装 App2
- 从 App1 运行和导入数据
- App2 提示用户卸载 App1
关于android - 如何防止使用泄露的 keystore 和密码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39656359/