2012-12-26 17 views
7

içinde bulunan anahtarları kullanarak bir apk olarak sistem imzalama Başlık olarak, benim app platform.x509.pem ve platform.pk8 kullanarak imzalamaya çalışıyorum.Kaynak/build/target/product/security/

: Doğrudan APK böyle SignApk.jar kullanarak oturum açmaya çalışırken

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


Ve ayrıca bir hata alıyorum: Sorun böyle eklemenin keytool-importkeypairs kullanırken hatalar olsun olmasıdır

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


Keytool'u-importkeypairs hatası:

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 


Kullanılan Kaynaklar: Apk with system privileges, How to sign Android app with system signature? (SO) ve How to update the android dev phone 2 from 1.6 to 2.1
Yukarıdaki bağlantılarda açıklanan yöntemlerin hiçbiri, artık görebileceğiniz gibi çalışmıyor. Şimdiden teşekkürler.

+0

Neden sistem ayrıcalıklarına ihtiyacınız var? – 0909EM

+0

[PowerManager] (http://developer.android.com/reference/android/os/PowerManager.html#reboot (java.lang) adresindeki "yeniden başlatma" komutuna erişmesi gereken bir uygulama oluşturuyorum.String)) özellikle önyüklemede bir dizi test çalıştırmak ve belirli bir marka telefonun köklendirilip yüklenemeyeceğini belirlemek ve eğer varsa, bu telefonun sahibi bilgisayar tarafındaki bir yardımcı programı (benim tarafımdan) kullanabilir. böyle yap. – cnexus

+0

@ 9090EM Açıkçası bu uygulama Play Store'da dağıtılmayacaktı, ancak XDA'da itibarım var, bunu kullanan insanlar ne yaptıklarını bilirdi ve sistemlerine zararlı bir şey yapmazdım. – cnexus

cevap

12

Önce dosyaların biçimini kontrol edin (cat, vb. Ile), hatalar beklenen biçimde olmadıklarını gösterir (ASN.1/PEM).

Daha da önemlisi, bu tuşların kullanılması nadiren herhangi bir anlam ifade eder. Bunlar yalnızca örnek anahtardır ve kendilerine saygı duyan herhangi bir özel ROM kendi özel anahtarlarını kullanacaktır. Aksi takdirde hemen herkes, APK'larını AOSP'taki genel anahtarlarıyla imzalayabilir ve istedikleri ayrıcalığı alabilirler. Hangisi, çok kötü bir şey söylemek gereksizdir. Sistem ayrıcalıklarını kullanan ve tüm (veya çoğu) köklü telefonlarda ve özel ROM'larda çalışmasını isteyen bir uygulama geliştirmeniz gerekiyorsa, bunu yapmanın doğru yolu, su ile kök erişimi isteğinde bulunmak ve ne yapmanız gerekiyorsa onu yapmaktır. kök kabuk. Kullanıcı size izin verirse elbette.

DÜZENLEME:

, ithalat hata ayıklamak adım adım çalıştırın. Varsayılan AOSP tuşları ile çalışır.

$ 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 

İşlevi:

  1. PEM PKCS # 8 biçimi ikili anahtar dönüştürür (openssl pkcs8)
  2. özel anahtarı ve ikisini de içeren bir PKCS # 12 dosya oluşturur sertifikası (openssl pkcs12)
  3. Java'nın keytool PKCS # 12 dosyalarını anahtar deposu olarak okuyabildiğinden, PKCS # 12 dosyanızı e Yerel biçime (BKS veya JKS) etkin bir şekilde dönüştürün (keytool -importkeystore)
  4. (bonus) Her şeyin çalıştığından emin olmak için içeriği listelemek için keytool'u kullanır. (keytool -list)
+0

Evet, "su" ile erişim talebinde bulunabileceğimin farkındayım, ancak asıl nokta bu uygulamayı çalıştıran cihazın YET'in root yetkisine sahip olmaması. İmzalama anahtarlarını almak için herhangi bir yol var mı? Ne yazık ki şimdiye kadar yokmuş gibi görünüyor. – cnexus

+1

Elbette, üretici anahtarlarının doğrudan elde edilmesinin bir yolu yoktur. Uygulamanızın bir ROM’a yönetici tarafından dahil edilmesini sağlayabilirsiniz. Ayrıca, 'root uygulamalarının' tüm noktası, yalnızca * zaten * rootlanmış cihazlarda çalışacaklarıdır. –

+0

Gerçek hatayız için anahtar dosyalar neye benziyor? Kontrol ettin mi. –