gpt4 book ai didi

java - 使用在 source/build/target/product/security/中找到的 key 将 apk 签名为系统

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:20:21 25 4
gpt4 key购买 nike

正如标题所述,我正在尝试使用 platform.x509.pem 和 platform.pk8 对我的应用程序进行签名。问题是我在使用 keytool-importkeypairs 添加这些时遇到错误,如下所示:

keytool-importkeypair -k ~/.android/debug.keystore -p android -pk8 platform.pk8 -cert platform.x509.pem -alias platform


当我尝试像这样使用 SignApk.jar 直接签署 APK 时,我也会收到错误消息:

java -jar SignApk.jar platform.x509.pem platform.pk8 test-app.apk test-app-signed.apk


Keytool-importkeypairs错误:

Error decrypting key
3074042056:error:0D0680A8:asn1 encoding routines:ASN1_CHECK_TLEN:wrong tag:tasn_dec.c:1319:
3074042056:error:0D07803A:asn1 encoding routines:ASN1_ITEM_EX_D2I:nested asn1 error:tasn_dec.c:381:Type=PKCS8_PRIV_KEY_INFO
unable to load private key
3074091208:error:0906D06C:PEM routines:PEM_read_bio:no start line:pem_lib.c:696:Expecting: ANY PRIVATE KEY
Importing "platform" with unable to load certificate
3073755336:error:0906D06C:PEM routines:PEM_read_bio:no start line:pem_lib.c:696:Expecting: TRUSTED CERTIFICATE
keytool error: java.lang.Exception: Source keystore file exists, but is empty: /tmp/keytool-importkeypair.vDOP/p12


使用的来源:Apk with system privileges , How to sign Android app with system signature? (SO) , 和 How to update the android dev phone 2 from 1.6 to 2.1
如您所见,以上链接中描述的方法现在都不起作用。提前致谢。

最佳答案

首先检查文件的格式(使用 cat 等),错误表明它们不是预期的格式 (ASN.1/PEM)。

更重要的是,使用这些键很少有任何意义。这些只是示例 key ,任何自重的自定义 ROM 都将使用其自己的私有(private) key 。否则,几乎任何人都可以使用 AOSP 中的公钥 签署他们的 APK,并获得他们想要的任何特权。不用说,这是一件非常糟糕的事情。如果您需要开发一个使用系统权限的应用程序并希望它在所有(或大多数)root 手机和自定义 ROM 上运行,正确的方法是使用 su 请求 root 访问权限并执行无论您需要在 root shell 中做什么。当然,如果用户授予您权限。

编辑:

要调试导入错误,请逐步运行。它确实适用于默认的 AOSP key 。

$ openssl pkcs8 -inform DER -nocrypt -in platform.pk8 -out platform.pem
$ openssl pkcs12 -export -in platform.x509.pem -inkey platform.pem -out platform.p12 -password pass:android -name platform
$ keytool -importkeystore -deststorepass android -destkeystore test.keystore -srckeystore platform.p12 -srcstoretype PKCS12 -srcstorepass android
$ keytool -list -v -keystore test.keystore

它的作用:

  1. 将 PKCS#8 格式的二进制 key 转换为 PEM (openssl pkcs8)
  2. 创建一个包含私钥和证书的 PKCS#12 文件 (openssl pkcs12)
  3. 由于 Java 的 keytool 可以读取 PKCS#12 文件作为 keystore ,它会导入您的 PKCS#12 文件以有效地将其转换为 native 格式(BKS 或 JKS)(keytool -importkeystore)
  4. (奖励)使用 keytool 列出内容以确保一切正常。 (keytool -list)

关于java - 使用在 source/build/target/product/security/中找到的 key 将 apk 签名为系统,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14035426/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com