Как узнать, какое хранилище ключей было использовано для подписи приложения?



У меня есть приложение, которое подписано и несколько файлов хранилища ключей. Я хотел бы обновить приложение, поэтому мне нужно выяснить, какой из ключей был использован.



Как я могу сопоставить, какое хранилище ключей было использовано для первоначальной подписи моего приложения против различных хранилищ ключей, которые у меня есть на моей машине?

521   5  

5 ответов:

во-первых, распакуйте APK и извлеките файл /META-INF/ANDROID_.RSA (этот файл также может быть CERT.RSA, но должен быть только один .RSA file).

затем выполните следующую команду:

keytool -printcert -file ANDROID_.RSA

вы получите отпечатки пальцев сертификата, как это:

     MD5:  B3:4F:BE:07:AA:78:24:DC:CA:92:36:FF:AE:8C:17:DB
     SHA1: 16:59:E7:E3:0C:AA:7A:0D:F2:0D:05:20:12:A8:85:0B:32:C5:4F:68
     Signature algorithm name: SHA1withRSA

затем снова используйте keytool, чтобы распечатать все псевдонимы вашего хранилища ключей подписи:

keytool -list -keystore my-signing-key.keystore

вы получите список псевдонимов и их сертификат отпечаток пальца:

android_key, Jan 23, 2010, PrivateKeyEntry,
Certificate fingerprint (MD5): B3:4F:BE:07:AA:78:24:DC:CA:92:36:FF:AE:8C:17:DB

вуаля! теперь мы можем определить, что apk был подписан с этим хранилищем ключей и с псевдонимом "android_key".

Keytool является частью Java, поэтому убедитесь, что ваш путь имеет Java installation dir в нем.

вы можете использовать ключ Java 7 и инструмент управления сертификатами keytool чтобы проверить подпись хранилища ключей или APK без извлечения каких-либо файлов.

подпись APK

keytool -list -printcert -jarfile app.apk

вывод покажет владельца подписи / эмитента и отпечатки пальцев MD5, SHA1 и SHA256 файла APK app.apk.

(заметьте, что тег

чтобы построить ответ пола Ламмертсмы, эта команда напечатает имена и подписи всех APKs в текущем каталоге (я использую sh, потому что позже мне нужно передать вывод в grep):

find . -name "*.apk" -exec echo "APK: {}" \; -exec sh -c 'keytool -printcert -jarfile "{}"' \;

пример вывода:

APK: ./com.google.android.youtube-10.39.54-107954130-minAPI15.apk
Signer #1:

Signature:

Owner: CN=Unknown, OU="Google, Inc", O="Google, Inc", L=Mountain View, ST=CA, C=US
Issuer: CN=Unknown, OU="Google, Inc", O="Google, Inc", L=Mountain View, ST=CA, C=US
Serial number: 4934987e
Valid from: Mon Dec 01 18:07:58 PST 2008 until: Fri Apr 18 19:07:58 PDT 2036
Certificate fingerprints:
         MD5:  D0:46:FC:5D:1F:C3:CD:0E:57:C5:44:40:97:CD:54:49
         SHA1: 24:BB:24:C0:5E:47:E0:AE:FA:68:A5:8A:76:61:79:D9:B6:13:A6:00
         SHA256: 3D:7A:12:23:01:9A:A3:9D:9E:A0:E3:43:6A:B7:C0:89:6B:FB:4F:B6:79:F4:DE:5F:E7:C2:3F:32:6C:8F:99:4A
         Signature algorithm name: MD5withRSA
         Version: 1

APK: ./com.google.android.youtube_10.40.56-108056134_minAPI15_maxAPI22(armeabi-v7a)(480dpi).apk
Signer #1:

Signature:

Owner: CN=Unknown, OU="Google, Inc", O="Google, Inc", L=Mountain View, ST=CA, C=US
Issuer: CN=Unknown, OU="Google, Inc", O="Google, Inc", L=Mountain View, ST=CA, C=US
Serial number: 4934987e
Valid from: Mon Dec 01 18:07:58 PST 2008 until: Fri Apr 18 19:07:58 PDT 2036
Certificate fingerprints:
         MD5:  D0:46:FC:5D:1F:C3:CD:0E:57:C5:44:40:97:CD:54:49
         SHA1: 24:BB:24:C0:5E:47:E0:AE:FA:68:A5:8A:76:61:79:D9:B6:13:A6:00
         SHA256: 3D:7A:12:23:01:9A:A3:9D:9E:A0:E3:43:6A:B7:C0:89:6B:FB:4F:B6:79:F4:DE:5F:E7:C2:3F:32:6C:8F:99:4A
         Signature algorithm name: MD5withRSA
         Version: 1

или если вы просто заботитесь о SHA1:

find . -name "*.apk" -exec echo "APK: {}" \; -exec sh -c 'keytool -printcert -jarfile "{}" | grep SHA1' \;

пример вывода:

APK: ./com.google.android.youtube-10.39.54-107954130-minAPI15.apk
         SHA1: 24:BB:24:C0:5E:47:E0:AE:FA:68:A5:8A:76:61:79:D9:B6:13:A6:00
APK: ./com.google.android.youtube_10.40.56-108056134_minAPI15_maxAPI22(armeabi-v7a)(480dpi).apk
         SHA1: 24:BB:24:C0:5E:47:E0:AE:FA:68:A5:8A:76:61:79:D9:B6:13:A6:00

гораздо более простой способ просмотра сертификата подписи:

jarsigner.exe -verbose -verify -certs myapk.apk

Это покажет только DN, так что если у вас есть два сертификата с тем же DN, вам, возможно, придется сравнить по отпечатку пальца.

есть много freewares для изучения сертификатов и хранилищ ключей, таких как KeyStore Explorer.

распакуйте apk и откройте META-INF/?.Файл RSA. ? должен быть сертификат или ANDROID или может быть что-то еще. Он будет отображать всю информацию, связанную с вашей АПК.

Comments

    Ничего не найдено.