如何解决Android 签名密钥更改不是 Play 商店分发的应用
我有以下场景:
我们有一个重要的应用程序,它通过从我们自己的服务器(不是 Play 商店)下载 apk 进行分发。该应用程序通过下载和安装 apk(带有 android 意图)来更新自身和另一个应用程序。这两个 apk 都由我们公司的代码签名密钥签名。
问题:
签名密钥将在 5 天后到期,我们无法续订,因为它是 2048 位 RSA。根据一些 CA/Browser 论坛文档:
Baseline requirements for code signing
但是如果我们把私钥改成3072bit RSA,android会拒绝安装(这个我理解):
Package com.whatever.myapp signatures do not match previously installed version; ignoring!
对于用户来说,有没有比卸载和重新安装应用程序更轻松的方法?(它在全国范围内分发给 1000 多个无法执行此操作的客户)。
更改包名意味着为客户端提供一个干净的数据库,因此这不是一个可行的解决方案。这是真的吗,我无法获得 2048 位 RSA 私钥的有效签名?有什么解决办法吗?
提前致谢!
解决方法
密钥不会过期,但证书会过期(或者至少它们有一个 NotValidAfter
字段)。话虽如此,Android 不会验证证书的有效性,它只会强制证书逐字节保持相同,因此从技术上讲,拥有“过时”的证书不会对您的用户产生影响。
如果您仍想更改密钥,则必须使用 密钥轮换 (https://source.android.com/security/apksigning/v3),这是 Android 9 中引入的一项功能,因此只有 Android 用户9+ 将能够使用新密钥验证签名,而旧设备上的用户将继续使用旧密钥验证签名。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。