Jak sprawdzić, czy aplikacja na Androida jest podpisana certyfikatem wydania?

222

Jak mogę sprawdzić, czy aplikacja na Androida jest podpisana przy pomocy wydania i nie debuguje certyfikatu?

Vadivelan
źródło
6
Napisałem skrypt , który zweryfikuje apk względem magazynu kluczy.
JohnnyLambada
zaakceptuj odpowiedź, jeśli masz swoją.
Rinkal Bhanderi
@JohnnyLambada Jak uruchomić skrypt w komputerze Mac?
Aaron Azhari
1
@JohnnyLambada Jak mogę uruchomić skrypt?
sunil
@sunil To skrypt bash, który tworzy nową funkcję bash. następnie kliknij link i wklej go do pliku source thatfile. Komentarze w skrypcie wyjaśniają, jak go uruchomić.
JohnnyLambada,

Odpowiedzi:

372

Użyj tego polecenia, (przejdź do java <ścieżka jdk <bin w wierszu polecenia cmd)

$ jarsigner -verify -verbose -certs my_application.apk

Jeśli zobaczysz „CN = Android Debug”, oznacza to, że plik .apk został podpisany kluczem debugowania wygenerowanym przez zestaw SDK systemu Android (oznacza, że ​​jest niepodpisany), w przeciwnym razie znajdziesz coś dla CN. Aby uzyskać więcej informacji, zobacz: http://developer.android.com/guide/publishing/app-signing.html

Anass
źródło
1
Otrzymałem komunikat jako jar zweryfikowany na końcu wykonania polecenia dla 2 plików APK diff. Więc się pomyliłem. ale ponieważ daje CN = „Android debugowanie” dla 1 apka i inny dla innej apki. muszę wiedzieć, który 1 jest podpisany. Dzięki.
iRunner,
3
Jak to weryfikuje podpis? Czy użyje zaufanych urzędów certyfikacji systemu? Czy to tylko narzędzie do sprawdzania integralności plików jar? Dziękuję
Mostafa Shahverdy
2
this means the .apk was signed with the debug key generated by the Android SDK (means it is unsigned)- nie oznacza to, że jest niepodpisany. Oznacza to, co właśnie napisałeś - jest podpisany kluczem do debugowania.
Dmitrij Zajcew
3
Jak możemy sprawdzić, czy podpisano go dokładnie tym samym plikiem certyfikatu, a nie tylko takim, który ma takie same wartości dla organizacji, lokalizacji itp.?
OlivierM
1
Dzięki. Więc jarsigner -verify -verbose -certs myapp.apk | grep CN= | lessnie powinniśmy widzieć „CN = Android Debug”.
rpattabi
70

Użyj polecenia konsoli:

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

Możesz znaleźć apksigner w ../sdk/build-tools/24.0.3/apksigner.bat. Tylko dla narzędzi do budowania w wersji 24.0.3 i nowszych.

Przeczytaj także dokumenty Google: https://developer.android.com/studio/command-line/apksigner.html

PavelGP
źródło
Znalazłem apksignerw `% LOCALAPPDATA% \ Android \ sdk \ build-tools \ 25.0.3` (i każdej innej wersji narzędzi do budowania, którą zainstalowałem)
Jon
2
Zauważ, że apksignerbrakuje jej w wersji 26.0.0build-tools. Jest on śledzony na stronie Issuetracker.google.com/issues/62696222 i powinien zostać naprawiony w następnej wersji. Obejściem do tego czasu jest użycie apksignerz 25.0.3.
friederbluemle
2
Aktualizacja: apksignerjest zawarta w wersji26.0.1
forresthopkinsa 25.09.17
Aktualizacja: APKSigner jest również w wersji 26.0.2, 26.0.3, 27.0.0, 27.0.1, 27.0.2 Wierzę, że znajdziesz go we wszystkich przyszłych wydaniach :)
Kirill Vashilo 30.01.2018
2
dla pełnego wyjścia użyj opcji -v:./apksigner verify --print-certs -v ~/Downloads/MyAppHere.apk
Tilo,
59

Użyj tego polecenia: (Jarsigner znajduje się w folderze bin Java w goto java-> jdk-> ścieżka bin w wierszu polecenia cmd)

$ jarsigner -verify my_signed.apk

Jeśli plik .apk jest poprawnie podpisany, Jarsigner drukuje „jar zweryfikowany”

Udaykiran
źródło
13
Nie jest to wystarczająco dobre, ponieważ zarówno pliki debugowania, jak i wydania są podpisane, da „jar zweryfikowany”. Sprawdź szczegóły odpowiedzi @ Anass.
rpattabi
Próbowałem dokładnie tego polecenia i zostało zweryfikowane. Następnie jako eksperyment wszedłem do APK i usunąłem dosłownie każdy plik oprócz plików sig i manifestu, i nadal jest weryfikowany. Więc coś tu jest bardzo nie tak. Jednak muszę jeszcze wypróbować odpowiedź @ Anass.
orblivion
39

Najłatwiejszy ze wszystkich:

keytool -list -printcert -jarfile file.apk

Korzysta z wbudowanej aplikacji Java keytool i nie wymaga wyodrębniania ani instalacji narzędzi do budowania.

Randy Sugianto „Yuku”
źródło
Dla każdego, kto nie może keytoolnatychmiast uruchomić , sprawdź to i może spróbuj dodać %JAVA_HOME%\bindo ścieżki
TT