Firmar un apk como sistema usando las claves encontradas en source / build / target / product / security /

Así como los estados del título, estoy tratando de firmar mi aplicación utilizando el platform.x509.pem y platform.pk8. El problema es que tengo errores al usar keytool-importkeypairs para agregar estos como esto:

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

Y también consigo un error al intentar firmar directamente el APK usando SignApk.jar como esto:

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

Keytool-importkeypairs error:

 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 

Fuentes utilizadas: Apk con privilegios del sistema , ¿Cómo firmar la aplicación de Android con la firma del sistema? (SO) , y Cómo actualizar el teléfono Android dev 2 de 1,6 a 2,1
Ninguno de los métodos descritos en los enlaces anteriores funcionan ahora, como se puede ver. Gracias por adelantado.

Compruebe primero el formato de los archivos (con cat , etc.), el error sugiere que no están en el formato esperado (ASN.1 / PEM).

Más importante aún, el uso de esas claves rara vez tiene sentido. Esas son sólo ejemplos de claves, y cualquier ROM personalizada que se precie usará sus propias claves privadas . De lo contrario casi cualquier persona puede firmar su APK con las claves públicas en AOSP y obtener el privilegio que quieran. Cuál es, innecesario decir, una cosa muy mala . Si necesita desarrollar una aplicación que utilice los privilegios del sistema y desee que funcione en todos los teléfonos con raíces (o la mayoría) y en las ROM personalizadas, la forma correcta de hacerlo es solicitar acceso root con su y ejecutar lo que necesite hacer en un Shell de raíz Si el usuario le concede el permiso, por supuesto.

EDITAR:

Para depurar el error de importación, ejecute este paso a paso. Funciona con las claves AOSP predeterminadas.

 $ 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 

Que hace:

  1. Convierte la clave binaria de formato PKCS # 8 en PEM ( openssl pkcs8 )
  2. Crea un archivo PKCS # 12 que incluye tanto la clave privada como el certificado ( openssl pkcs12 )
  3. Dado que el keytool de Java puede leer archivos PKCS # 12 como almacén de claves, importa su archivo PKCS # 12 para convertirlo de forma efectiva al formato nativo (BKS o JKS) ( keytool -importkeystore )
  4. (Bonus) Utiliza keytool para listar el contenido para asegurarse de que todo funcionó. ( keytool -list )
  • Configurar Eclipse para usar el almacén de claves firmado
  • ¿Eclipse recuerda la contraseña de keystore de Android?
  • ¿Dónde puedo encontrar la ubicación predeterminada para las librerías de claves android creadas por eclipse?
  • Cómo encontrar la huella dactilar MD5 de mi aplicación para Android
  • Hacer una conexión HTTPS mediante URL.openConnection ()
  • ¿Cómo puedo especificar la ubicación de debug keystore para Android ant debug builds?
  • AndroidKeyStore eliminado después del cambio de contraseña del dispositivo
  • Android - ¿Puede publicar diferentes aplicaciones con el mismo archivo de almacén de claves en varias cuentas?
  • Problemas en la publicación de archivos .apk sin firmar?
  • Android - obteniendo clave hash para la integración de Facebook
  • Buscar la fecha de caducidad de Android keystore
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.