Mam podpisaną aplikację i kilka plików kluczy. Chciałbym zaktualizować aplikację, więc muszę dowiedzieć się, który z kluczy został użyty.
Jak mogę dopasować, który magazyn kluczy został użyty do pierwotnego podpisania mojej aplikacji z różnymi magazynami kluczy, które mam na swoim komputerze?
Odpowiedzi:
Najpierw rozpakuj APK i rozpakuj plik /META-INF/ANDROID_.RSA (ten plik może być również CERT.RSA, ale powinien istnieć tylko jeden plik .RSA).
Następnie wydaj polecenie:
Otrzymasz takie odciski palców certyfikatu:
Następnie ponownie użyj narzędzia keytool, aby wydrukować wszystkie aliasy swojego magazynu kluczy podpisywania:
Otrzymasz listę aliasów i ich odcisk palca certyfikatu:
Voila! możemy teraz stwierdzić, że apk został podpisany za pomocą tego magazynu kluczy i aliasu „android_key”.
Keytool jest częścią Java, więc upewnij się, że w swojej PATH znajduje się katalog instalacji Java.
źródło
Za pomocą Narzędzia
keytool
do zarządzania kluczami i certyfikatami Java 7 można sprawdzić podpis pliku kluczy lub pliku APK bez wyodrębniania żadnych plików.Podpis APK
Dane wyjściowe ujawnią właściciela / wystawcę podpisu oraz odciski palców MD5, SHA1 i SHA256 pliku APK
app.apk
.(Zauważ, że
-jarfile
argument został wprowadzony w Javie 7; więcej szczegółów znajduje się w dokumentacji ).Podpis magazynu kluczy
Dane wyjściowe ujawnią aliasy (wpisy) w pliku kluczy
release.jks
, wraz z odciskami palców certyfikatu (MD5, SHA1 i SHA256).Jeśli odciski palców SHA1 między pakietem APK a magazynem kluczy są zgodne, możesz mieć pewność, że aplikacja jest podpisana za pomocą klucza.
źródło
-jarfile
argument został wprowadzony w Javie 7. Zaktualizowałem odpowiedź.Aby oprzeć się na odpowiedzi Paula Lammertsmy, to polecenie wypisze nazwy i podpisy wszystkich plików APK w bieżącym katalogu (używam sh, ponieważ później muszę przesłać dane wyjściowe do grep):
find . -name "*.apk" -exec echo "APK: {}" \; -exec sh -c 'keytool -printcert -jarfile "{}"' \;
Przykładowe dane wyjściowe:
Lub jeśli zależy ci tylko na SHA1:
find . -name "*.apk" -exec echo "APK: {}" \; -exec sh -c 'keytool -printcert -jarfile "{}" | grep SHA1' \;
Przykładowe dane wyjściowe:
źródło
Znacznie łatwiejszy sposób przeglądania certyfikatu podpisującego:
To pokaże tylko nazwę wyróżniającą, więc jeśli masz dwa certyfikaty z tą samą nazwą wyróżniającą, być może będziesz musiał porównać dane odcisków palców.
źródło
Istnieje wiele darmowych programów do sprawdzania certyfikatów i magazynów kluczy, takich jak KeyStore Explorer .
Rozpakuj apk i otwórz plik META-INF / ?. RSA. ? będzie CERT lub ANDROID lub może być czymś innym. Wyświetli wszystkie informacje związane z aplikacją.
źródło
Możesz to zrobić za pomocą
apksigner
narzędzia, które jest częścią zestawu Android SDK:apksigner verify --print-certs my_app.apk
Możesz znaleźć apksigner w katalogu build-tools. Na przykład:
~/Library/Android/sdk/build-tools/29.0.1/apksigner
źródło