2012-07-06 55 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