如何验证Android APK已使用发布证书签名?


222

如何检查Android APK是否已发布版本且未调试证书?


6
我编写了一个脚本该脚本将针对密钥库验证apk。
JohnnyLambada

如果您有答案,请接受答案。
Rinkal Bhanderi 2015年

@JohnnyLambada如何在Mac中运行您的脚本?
亚伦·阿扎里

1
@JohnnyLambada我如何运行您的脚本?
sunil

@sunil这是一个bash脚本,用于创建新的bash函数。按照链接并将其粘贴到文件中,然后source thatfile。脚本中的注释说明了如何运行它。
JohnnyLambada 2015年

Answers:


372

使用此命令(在cmd提示符下转到java <jdk <bin路径)

$ jarsigner -verify -verbose -certs my_application.apk

如果看到“ CN = Android Debug”,则表示.apk已使用Android SDK生成的调试密钥进行了签名(意味着未签名),否则,您将找到CN的内容。有关更多详细信息,请参见:http : //developer.android.com/guide/publishing/app-signing.html


1
我在命令执行的最后得到了2个diff apk文件的jar验证消息,因此感到困惑。但由于它为1个apk提供CN =“ android debug”,而对于其他apk则提供了不同。
iRunner 2012年

3
这如何验证签名?它将使用系统的受信任CA吗?还是这只是一个检查jar文件完整性的工具?谢谢
Mostafa Shahverdy 2014年

2
this means the .apk was signed with the debug key generated by the Android SDK (means it is unsigned)-这并不意味着它是未签名的。这意味着您刚刚编写的内容-已使用调试密钥签名。
德米特里·扎伊采夫2015年

3
我们如何才能检查它是否使用了完全相同的证书文件签名,而不仅仅是一个恰好具有相同的组织,位置等值的文件?
OlivierM 2015年

1
谢谢。因此jarsigner -verify -verbose -certs myapp.apk | grep CN= | less,我们不应看到“ CN = Android Debug”。
rpattabi '16

70

使用控制台命令:

apksigner verify --print-certs application-development-release.apk

您可以在../sdk/build-tools/24.0.3/apksigner.bat中找到apksigner。仅适用于24.0.3及更高版本的构建工具。

另请阅读Google文档:https : //developer.android.com/studio/command-line/apksigner.html


我发现apksigner在`%LOCALAPPDATA%\ Android的\ SDK \构建工具\ 25.0.3`(和所有其他的编译工具的版本我已经安装)
乔恩

2
请注意,构建工具apksigner版本26.0.0中缺少该功能。已在issuetracker.google.com/issues/62696222中对其进行了跟踪,并且应该在下一版本中进行修复。解决方法:在那之前是使用apksigner25.0.3
Friederbluemle

2
更新:apksigner包含在版本中26.0.1
forresthopkinsa

更新:APKSigner也在26.0.2、26.0.3、27.0.0、27.0.1、27.0.2中,我相信您会在以后的所有发行版中找到它:)
Kirill Vashilo

2
对于详细输出,请使用-v:./apksigner verify --print-certs -v ~/Downloads/MyAppHere.apk
Tilo

59

使用以下命令:(Jarsigner在您的Java bin文件夹中,转到cmd提示符下的java-> jdk-> bin路径)

$ jarsigner -verify my_signed.apk

如果.apk签名正确,则Jarsigner会打印“ jar经过验证”


13
这还不够好,因为调试和发布apk均已签名,将提供“ jar验证”。检查@Anass答案的详细信息。
rpattabi '16

我完全尝试了此命令,并进行了验证。然后,作为一项实验,我进入了APK,从字面上删除了除sig文件和清单之外的所有文件,并且仍然对其进行了验证。所以这里有些错误。但是我还没有尝试@Anass的答案。
orblivion

39

最简单的:

keytool -list -printcert -jarfile file.apk

这使用Java内置的keytool应用程序,不需要解压缩或安装任何构建工具。


对于无法keytool立即运行的任何人,请检查此内容,然后尝试添加%JAVA_HOME%\bin到路径中
-TT

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.