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+ 将能够使用新密钥验证签名,而旧设备上的用户将继续使用旧密钥验证签名。

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...