2012-07-06 290 views
35

我如何獲取apk的簽名證書的詳細信息。我有一堆apks用不同的證書籤名,我試圖根據他們的證書對他們進行分組。從apk中獲取證書詳細信息

我可以使用jarsigner獲得證書有效期的詳細信息,並完成我的任務,但我很好奇,如果我可以得到任何更多的細節或提取公鑰(我相信它存儲在META-INF/cert.RSA中,但它不是可讀)

+0

您可以通過應用程序(一個或多個)提取X509證書做[運行](http://stackoverflow.com/a/7632973/967142) - 也應該給ÿ我假設的公鑰。 – Jens 2012-07-06 11:41:56

+0

我想這樣做沒有代碼(請不要傷害我stackoverflow) – 2012-07-06 11:52:20

+0

可能重複的[如何查看在Android設備上簽名的人的身份?](http://stackoverflow.com/questions/ 4324120/how-to-view-the-identity-of-person-who-signed-the-apk-on-android-device) – 2013-04-19 20:51:47

回答

37

嘗試以下操作:

openssl pkcs7 -inform DER -in CERT.RSA -noout -print_certs -text 
+4

你也可以用java的'keytool'獲得一些信息:'keytool -printcert -file CERT .RSA',但'openssl'更加冗長,這就是爲什麼我更喜歡它。 – pevik 2014-07-01 22:09:31

30

unzip -p Name-of-apk.apk META-INF/CERT.RSA | keytool -printcert是我用什麼。

它產生的信息,如所有者,發行人,序列號,有效通過,證書指紋,簽名算法和版本。

19

基於現有的答案,這裏的命令行上即時的openssl使用(解壓&管的證書,而不是定義-infile選項)

unzip -p App.apk META-INF/CERT.RSA |openssl pkcs7 -inform DER -noout -print_certs -text 
+0

沒有SHA1 – HendraWD 2017-09-18 08:04:05

2

沒有拆包即可從Android SDK中使用ApkSigner及以下:

apksigner.jar verify --print-certs myApplication.apk 
+1

很好的答案。請注意,從Android 7開始,引入了一個新的簽名方案(V2),該方案將生成沒有CERT.RSA的APK文件。所以舊的方法(使用openssl/keytool)將不起作用。 (請參閱:https://source.android.com/security/apksigning/v2) – 2018-02-06 09:48:09