Comment vérifier qu'un apk Android est signé avec un certificat de sortie?

222

Comment puis-je vérifier qu'un apk Android est signé avec une version et non déboguer le certificat?

Vadivelan
la source
6
J'ai écrit un script qui validera une apk par rapport à un keystore.
JohnnyLambada
Acceptez la réponse si vous avez la vôtre.
Rinkal Bhanderi
@JohnnyLambada Comment puis-je exécuter votre script sur Mac?
Aaron Azhari
1
@JohnnyLambada Comment puis-je exécuter votre script?
sunil
@sunil C'est un script bash qui crée une nouvelle fonction bash. suivez le lien et collez-le ensuite dans un fichier source thatfile. Les commentaires du script expliquent comment l'exécuter.
JohnnyLambada

Réponses:

372

Utilisez cette commande, (accédez à java <jdk <chemin bin dans l'invite cmd)

$ jarsigner -verify -verbose -certs my_application.apk

Si vous voyez "CN = Android Debug", cela signifie que le .apk a été signé avec la clé de débogage générée par le SDK Android (signifie qu'il n'est pas signé), sinon vous trouverez quelque chose pour CN. Pour plus de détails, voir: http://developer.android.com/guide/publishing/app-signing.html

Anass
la source
1
J'ai reçu le message comme jar vérifié à la fin de l'exécution de la commande pour 2 fichiers apk diff.so confondu. mais comme cela donne CN = "debug android" pour 1 apk et différent pour les autres apk .got pour savoir lequel est signé .Thanks.
iRunner
3
Comment cela vérifie-t-il la signature? Utilisera-t-il les autorités de certification de confiance du système? Ou ce n'est qu'un outil pour vérifier l'intégrité des fichiers jar? Merci
Mostafa Shahverdy
2
this means the .apk was signed with the debug key generated by the Android SDK (means it is unsigned)- cela ne signifie pas qu'il n'est pas signé. Cela signifie ce que vous venez d'écrire - il est signé avec une clé de débogage.
Dmitry Zaytsev
3
Comment pourrions-nous vérifier qu'il a été signé avec le même fichier de certificat exact, et pas seulement celui qui a les mêmes valeurs pour l'organisation, l'emplacement, etc.?
OlivierM
1
Merci. Donc, jarsigner -verify -verbose -certs myapp.apk | grep CN= | lesset nous ne devrions pas voir "CN = Android Debug".
rpattabi du
70

Utilisez la commande de la console:

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

Vous pouvez trouver apksigner dans ../sdk/build-tools/24.0.3/apksigner.bat. Uniquement pour les outils de build v. 24.0.3 et supérieur.

Lisez également google docs: https://developer.android.com/studio/command-line/apksigner.html

PavelGP
la source
J'ai trouvé apksignerdans `% LOCALAPPDATA% \ Android \ sdk \ build-tools \ 25.0.3` (et toutes les autres versions d'outils de construction que j'avais installées)
Jon
2
Notez que cela apksignermanque dans la version 26.0.0de build-tools. Il est suivi dans issuetracker.google.com/issues/62696222 et devrait être corrigé dans la prochaine version. La solution de contournement jusque-là consiste à utiliser à apksignerpartir de 25.0.3.
friederbluemle
2
Mise à jour: apksignerest incluse dans la version26.0.1
forresthopkinsa
Mise à jour: APKSigner est également disponible en 26.0.2, 26.0.3, 27.0.0, 27.0.1, 27.0.2 Je pense que vous le trouverez dans toutes les versions futures :)
Kirill Vashilo
2
pour une sortie détaillée, utilisez -v:./apksigner verify --print-certs -v ~/Downloads/MyAppHere.apk
Tilo
59

Utilisez cette commande: (Jarsigner est dans votre dossier Java bin goto java-> jdk-> bin path in cmd prompt)

$ jarsigner -verify my_signed.apk

Si le .apk est signé correctement, Jarsigner imprime "jar Verified"

Udaykiran
la source
13
Ce n'est pas suffisant car les apks de débogage et de sortie sont signés donneront "jar vérifié". Vérifiez les détails de la réponse de @ Anass.
rpattabi
J'ai essayé exactement cette commande et elle l'a vérifiée. Puis, à titre d'expérience, je suis allé dans l'APK et j'ai supprimé littéralement tous les fichiers, à l'exception des fichiers sig et du manifeste, et cela a toujours été vérifié. Donc, quelque chose ne va vraiment pas ici. Cependant, je n'ai pas encore essayé la réponse de @ Anass.
orblivion
39

Le plus simple de tous:

keytool -list -printcert -jarfile file.apk

Cela utilise l'application keytool intégrée à Java et ne nécessite aucune extraction ni installation d'outils de build.

Randy Sugianto «Yuku»
la source
Pour ceux qui ne peuvent pas courir keytoolimmédiatement, vérifiez cela et essayez peut-être d'ajouter %JAVA_HOME%\binau chemin
TT--