Android官方文档
https://source.android.google.cn/devices/tech/ota/sign_builds?hl=zh-cn https://android.googlesource.com/platform/build/+/refs/heads/master/target/product/security/README
前言
Android 操作系统映像在三个地方使用加密签名:
- 映像中的所有 .apk 文件都必须经过签名。Android 软件包管理器通过下列两种方式使用 .apk 签名:
- 更换应用时,必须使用与旧应用相同的密钥对其签名,才能存取旧应用的数据。无论是通过覆盖 .apk 来更新用户应用,还是使用安装在 /data 下的新版本应用来覆盖系统应用,这一点都适用。
- 如果两个或多个应用想要共享同一个用户 ID(方便共享数据等),则必须使用相同的密钥对它们进行签名。
- 必须使用符合系统预期的密钥对 OTA 更新包进行签名,否则在安装过程中 OTA 更新包将被拒绝。
- 必须使用符合系统预期的密钥对img进行签名,否则flash img后verity boot将失败而不能正常启动
生成key
生成releasekey platform shared media networkstack
subject='/C=CN/ST=Shanghai/L=Shanghai/O=Android/OU=Android/CN=Android/emailAddress=android@android.com'
for x in releasekey platform shared media networkstack; do \
./development/tools/make_key ~/.android-certs/$x "$subject"; \
done
生成 verity_key
make generate_verity_key
development/tools/make_key verity '/C=CN/ST=Shanghai/L=Shanghai/O=Android/OU=Android/CN=Android/emailAddress=android@android.com'
out/host/linux-x86/bin/generate_verity_key -convert verity.x509.pem verity_key
拷贝key
将以上两部份生成的key,拷贝到build/target/product/security,替换掉原来的key
生成key的参数解释
- C — Country Name (2 letter code)
- ST — State or Province Name (full name)
- L — Locality Name (eg, city)
- O — Organization Name (eg, company)
- OU — Organizational Unit Name (eg, section)
- CN — Common Name (eg, your name or your server’s hostname)
- emailAddress — Contact email address
|