Как мне убедиться, что Android apk подписан с сертификатом релиза?

222

Как я могу проверить, что Android apk подписан релизом, а не отладочным сертификатом?

Vadivelan
источник
6
Я написал скрипт , который проверит apk по хранилищу ключей.
JohnnyLambada
примите ответ, если у вас есть ваш.
Ринкал Бхандери
@JohnnyLambada Как я могу запустить ваш скрипт в Mac?
Аарон Ажари
1
@JohnnyLambada Как я могу запустить ваш скрипт?
Сунил
@sunil Это скрипт bash, который создает новую функцию bash. перейдите по ссылке и вставьте ее в файл source thatfile. Комментарии в скрипте объясняют, как его запустить.
JohnnyLambada

Ответы:

372

Используйте эту команду (перейдите в java <jdk <bin path в командной строке cmd)

$ jarsigner -verify -verbose -certs my_application.apk

Если вы видите «CN = Android Debug», это означает, что .apk был подписан с помощью ключа отладки, сгенерированного Android SDK (означает, что он не подписан), в противном случае вы найдете что-то для CN. Для получения дополнительной информации см .: http://developer.android.com/guide/publishing/app-signing.html

Anass
источник
1
Я получил сообщение как jar, проверенный в конце выполнения команды для 2 diff apk files.so, запутался. но так как он дает CN = "android debug" для 1 apk и отличается для других apk .got, чтобы узнать, какой 1 подписан. Спасибо.
iRunner
3
Как это проверить подпись? Будет ли он использовать доверенные ЦС системы? Или это только инструмент для проверки целостности файлов jar? Спасибо
Мостафа Шахверды
2
this means the .apk was signed with the debug key generated by the Android SDK (means it is unsigned)- это не значит, что оно не подписано. Это означает, что вы только что написали - это подписано ключом отладки.
Дмитрий Зайцев
3
Как мы можем проверить, что он был подписан тем же самым файлом сертификата, а не тем, который имеет одинаковые значения для организации, местоположения и т. Д.?
OlivierM
1
Спасибо. Так что jarsigner -verify -verbose -certs myapp.apk | grep CN= | lessи мы не должны видеть «CN = Android Debug».
rpattabi
70

Используйте консольную команду:

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

Вы можете найти apksigner в ../sdk/build-tools/24.0.3/apksigner.bat. Только для инструментов сборки v. 24.0.3 и выше.

Также ознакомьтесь с документами Google: https://developer.android.com/studio/command-line/apksigner.html.

PavelGP
источник
Я нашел apksignerв `% LOCALAPPDATA% \ Android \ sdk \ build-tools \ 25.0.3` (и во всех других версиях инструментов сборки, которые я установил)
Джон
2
Обратите внимание, что apksignerотсутствует в версии 26.0.0build-tools. Он отслеживается в issetracker.google.com/issues/62696222 и должен быть исправлен в следующей версии. Чтобы обойти эту проблему до тех пор, чтобы использовать apksignerс 25.0.3.
Friederbluemle
2
Обновление: apksignerвключено в версию26.0.1
форрестхопкинса
Обновление: APKSigner также есть в 26.0.2, 26.0.3, 27.0.0, 27.0.1, 27.0.2 Я полагаю, вы найдете его во всех будущих выпусках :)
Кирилл Вашило
2
для подробного вывода используйте -v:./apksigner verify --print-certs -v ~/Downloads/MyAppHere.apk
Tilo
59

Используйте эту команду: (Jarsigner находится в вашей папке Java bin, перейдите в java-> jdk-> bin путь в командной строке cmd)

$ jarsigner -verify my_signed.apk

Если .apk подписан должным образом, Jarsigner печатает «jar Verified»

Удай Киран
источник
13
Это не достаточно хорошо, так как и отладочный, и релизный apks подписаны будут давать "jar Verified". Проверьте детали ответа @ Anass.
rpattabi
Я попробовал именно эту команду, и она подтвердилась. Затем в качестве эксперимента я зашел в APK и удалил буквально все файлы, кроме файлов sig и манифеста, и он все еще проверен. Так что здесь что-то не так. Однако мне еще предстоит попробовать ответ @ Anass.
orblivion
39

Самый простой из всех:

keytool -list -printcert -jarfile file.apk

При этом используется встроенное в Java приложение keytool и не требуется извлечение или установка инструментов сборки.

Рэнди Сугианто 'Юку'
источник
Для тех, кто не может запустить keytoolсразу, проверьте это и, возможно, попробуйте добавить %JAVA_HOME%\binк пути
TT--