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?


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


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


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”


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.


Dla każdego, kto nie może keytoolnatychmiast uruchomić , sprawdź to i może spróbuj dodać %JAVA_HOME%\bindo ścieżki
TT

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.