0

我有以下情况:

我们有一个关键应用程序,它通过从我们自己的服务器(不是 Play 商店)下载的 apk 进行分发。该应用程序通过下载和安装 apk(带有 android 意图)来更新自身和另一个应用程序。这两个 apk 都由我们公司的代码签名密钥签名。

问题:

签名密钥将在 5 天后到期,我们无法更新它,因为它是 2048 位 RSA。根据一些 CA/浏览器论坛文件:

代码签名的基线要求

但是如果我们把私钥改成3072bit RSA,android会拒绝安装(这个我理解):

Package com.whatever.myapp signatures do not match previously installed version; ignoring!

有没有比卸载和重新安装应用程序让用户更痛苦的方法? (它在全国范围内分发给 1000 多个无法执行此操作的客户)。

更改包名称对客户端来说意味着一个干净的数据库,因此这不是一个可行的解决方案。这是真的吗,我无法获得 2048 位 RSA 私钥的有效签名?有什么解决办法吗?

提前致谢!

4

1 回答 1

1

密钥不会过期,但证书会过期(或者至少它们有一个NotValidAfter字段)。话虽如此,Android 不会验证证书的有效性,它只会强制证书保持逐字节不变,因此从技术上讲,拥有“过时”的证书不会对您的用户产生影响。

如果您仍想更改密钥,则必须使用密钥轮换( https://source.android.com/security/apksigning/v3 ),这是 Android 9 中引入的一项功能,因此仅限 Android 用户9+ 将能够使用新密钥验证签名,而旧设备上的用户将继续验证旧密钥的签名。

于 2021-03-11T22:35:19.553 回答