Android 11系统签名修改

Android OS 映像在两个地方使用加密签名:

  1. 映像中的所有 .apk 文件都必须经过签名。Android 软件包管理器通过下列两种方式使用 .apk 签名:

  • 更换应用时,必须使用与旧应用相同的密钥对其签名,才能存取旧应用的数据。无论是通过覆盖 .apk 来更新用户应用,还是使用安装在 /data 下的新版本应用来覆盖系统应用,这一点都适用。

  • 如果两个或多个应用想要共享同一个用户 ID(方便共享数据等),则必须使用相同的密钥对它们进行签名。

  1. 必须使用符合系统预期的密钥对 OTA 更新包进行签名,否则在安装过程中 OTA 更新包将被拒绝。

标准安卓使用四对密钥,分别是:

testkey: 适用于未另外指定密钥的 apk 包的通用默认密钥。(如果app的Android.mk中LOCAL_CERTIFICATE未设置,则默认会采用testkey)

platform: 适用于核心平台所包含的 apk 包的测试密钥。

shared: 适用于家庭/联系人进程中的共享内容的测试密钥。(apk需要和home/contacts共享数据)

Meida: 适用于媒体/下载系统所包含的 apk 包的测试密钥。(apk是media/download系统中的一环)

除testkey以外,其他密钥需要在App的Android.mk中明确指定LOCAL_CERTIFICATE。

以上提到的四对密钥默认在build/target/product/security目录,每种密钥包含两个文件:一个扩展名为.x509.pem的证书,一个扩展名为.pk8的私钥。以platform为例,则会有platform.x509.pem和platform.pk8两个文件。

需要注意的是:以上密钥都是默认密钥,也就是说用户需要自己生成密钥才能保证安全性。

根据安卓官方的声明,还可使用以下方式对单个apk通过路径名指定不同的密钥,比如:

device/yoyodyne/apps/SpecialApp/Android.mk

[...]

LOCAL_CERTIFICATE := device/yoyodyne/security/special

现在,此版本使用 device/yoyodyne/security/special.{x509.pem,pk8} 密钥来对 SpecialApp.apk 进行签名。此版本仅可使用不受密码保护的私钥

2.密钥生成

根据安卓官方推荐,使用以下命令生成新的密钥:

subject='/C=US/ST=California/L=Mountain View/O=Android/OU=Android/CN=Android/[email protected]'
我们可将subject中的内容替换为公司的信息。这样在android-certs中会生成四对密钥:releasekey/platform/share/media。

生成key的过程中会提示输入password, 可以不输入,避免编译过程中要求密码输入。

可将生成的密钥拷贝到build/target/product/security目录覆盖掉原有的默认密钥。

3. Makefile修改

为了使用releasekey替换掉testkey,需要修改以下Makefile文件:

  1. 在buid/core/config.mk中定义变量:DEFAULT_SYSTEM_DEV_CERTIFICATE := build/target/product/security/releasekey

  1. ./system/sepolicy/prebuilts/api/26.0/private/keys.conf
    ./system/sepolicy/private/keys.conf中将testkey修改为releasekey。

4. 手动签名image

如果需要对OTA image手动签名,可以使用以下命令:

./build/tools/releasetools/ota_from_target_files

-k ~/.android-certs/releasekey \ --签名key

signed-target_files.zip \ --输入文件,已经签过名

signed-ota_update.zip --输出文件,重签名文件

那么,如何得到OTA image对应的ROM image呢?可以使用以下命令生成:

./build/tools/releasetools/img_from_target_files signed-target-files.zip signed-img.zip

生成的signed-img.zip就包含所有的.img文件。可用fastboot加载到设备:

fastboot update singed-img.zip

猜你喜欢

转载自blog.csdn.net/a546036242/article/details/128981799