天天看點

Android 生成自己的簽名key(releasekey platform shared media networkstack verify等)Android官方文檔前言生成key

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 作業系統映像在三個地方使用加密簽名:

  1. 映像中的所有 .apk 檔案都必須經過簽名。Android 軟體包管理器通過下列兩種方式使用 .apk 簽名:
    • 更換應用時,必須使用與舊應用相同的密鑰對其簽名,才能存取舊應用的資料。無論是通過覆寫 .apk 來更新使用者應用,還是使用安裝在 /data 下的新版本應用來覆寫系統應用,這一點都适用。
    • 如果兩個或多個應用想要共享同一個使用者 ID(友善共享資料等),則必須使用相同的密鑰對它們進行簽名。
  2. 必須使用符合系統預期的密鑰對 OTA 更新包進行簽名,否則在安裝過程中 OTA 更新包将被拒絕。
  3. 必須使用符合系統預期的密鑰對img進行簽名,否則flash img後verity boot将失敗而不能正常啟動

生成key

生成releasekey platform shared media networkstack

subject='/C=CN/ST=Shanghai/L=Shanghai/O=Android/OU=Android/CN=Android/[email protected]'
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/[email protected]'
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