У меня есть приложение, которое подписано и несколько файлов хранилища ключей. Я хотел бы обновить приложение, поэтому мне нужно выяснить, какой из ключей был использован.
Как определить, какое хранилище ключей использовалось для первоначальной подписи моего приложения на разных хранилищах ключей на моем компьютере?
Ответы:
Сначала разархивируйте APK и извлеките файл /META-INF/ANDROID_.RSA (этот файл также может быть CERT.RSA, но должен быть только один файл .RSA).
Затем выполните эту команду:
Вы получите сертификаты отпечатков пальцев, как это:
Затем снова используйте keytool, чтобы распечатать все псевдонимы вашего хранилища ключей для подписи:
Вы получите список псевдонимов и их сертификат отпечатка пальца:
Вуаля! Теперь мы можем определить, что apk был подписан этим хранилищем ключей и псевдонимом «android_key».
Keytool является частью Java, поэтому убедитесь, что в вашем PATH есть установочный каталог Java.
источник
Вы можете использовать инструмент управления ключами и сертификатами в Java 7
keytool
для проверки подписи хранилища ключей или APK без извлечения каких-либо файлов.Подпись APK
Выходные данные покажут владельца / эмитента подписи и отпечатки MD5, SHA1 и SHA256 файла APK
app.apk
.(Обратите внимание, что
-jarfile
аргумент был введен в Java 7; более подробную информацию смотрите в документации .)Подпись хранилища ключей
Вывод покажет псевдонимы (записи) в файле хранилища ключей
release.jks
с отпечатками сертификатов (MD5, SHA1 и SHA256).Если отпечатки SHA1 между APK и хранилищем ключей совпадают, вы можете быть уверены, что это приложение подписано ключом.
источник
-jarfile
аргумент был введен в Java 7. Я обновил ответ.Чтобы построить ответ Пола Ламмерцма, эта команда напечатает имена и подписи всех APK в текущем каталоге (я использую sh, потому что позже мне нужно передать вывод в grep):
find . -name "*.apk" -exec echo "APK: {}" \; -exec sh -c 'keytool -printcert -jarfile "{}"' \;
Образец вывода:
Или, если вы просто заботитесь о SHA1:
find . -name "*.apk" -exec echo "APK: {}" \; -exec sh -c 'keytool -printcert -jarfile "{}" | grep SHA1' \;
Образец вывода:
источник
Намного проще посмотреть сертификат подписи:
Это покажет только DN, поэтому, если у вас есть два сертификата с одинаковым DN, вам, возможно, придется сравнить по отпечатку пальца.
источник
Существует много бесплатных программ для проверки сертификатов и хранилищ ключей, таких как KeyStore Explorer .
Разархивируйте apk и откройте файл META-INF / ?. RSA. ? должно быть CERT или ANDROID или может быть что-то еще. Он будет отображать всю информацию, связанную с вашим apk.
источник
Вы можете сделать это с помощью
apksigner
инструмента, который является частью Android SDK:apksigner verify --print-certs my_app.apk
Вы можете найти apksigner в каталоге build-tools. Например:
~/Library/Android/sdk/build-tools/29.0.1/apksigner
источник