Ich habe eine App, die signiert ist und mehrere Keystore-Dateien. Ich möchte die App aktualisieren, daher muss ich herausfinden, welcher der Schlüssel verwendet wurde.
Wie kann ich den Keystore, mit dem meine App ursprünglich signiert wurde, mit verschiedenen Keystores vergleichen, die ich auf meinem Computer habe?
Antworten:
Entpacken Sie zuerst die APK und extrahieren Sie die Datei /META-INF/ANDROID_.RSA (diese Datei kann auch CERT.RSA sein, es sollte jedoch nur eine .RSA-Datei vorhanden sein).
Geben Sie dann diesen Befehl ein:
Sie erhalten Zertifikatsfingerabdrücke wie folgt:
Verwenden Sie dann das Keytool erneut, um alle Aliase Ihres Signatur-Keystores auszudrucken:
Sie erhalten eine Liste der Aliase und ihres Zertifikatfingerabdrucks:
Voila! wir können nun feststellen, dass die apk mit diesem keystore und mit dem alias 'android_key' signiert wurde.
Keytool ist Teil von Java. Stellen Sie daher sicher, dass in Ihrem PATH das Java-Installationsverzeichnis enthalten ist.
quelle
Sie können das Schlüssel- und Zertifikatverwaltungstool von Java 7 verwenden
keytool
, um die Signatur eines Schlüsselspeichers oder einer APK zu überprüfen, ohne Dateien zu extrahieren.Unterschrift einer APK
Die Ausgabe zeigt den Signaturbesitzer / -aussteller sowie die Fingerabdrücke MD5, SHA1 und SHA256 der APK-Datei
app.apk
.(Beachten Sie, dass das
-jarfile
Argument in Java 7 eingeführt wurde. Weitere Informationen finden Sie in der Dokumentation .)Unterschrift eines Keystores
Die Ausgabe zeigt die Aliase (Einträge) in der Keystore-Datei
release.jks
mit den Zertifikat-Fingerabdrücken (MD5, SHA1 und SHA256).Wenn die SHA1-Fingerabdrücke zwischen der APK und dem Keystore übereinstimmen, können Sie sicher sein, dass diese App mit dem Schlüssel signiert ist.
quelle
-jarfile
Argument mit Java 7 eingeführt. Ich habe die Antwort aktualisiert.Um auf der Antwort von Paul Lammertsma aufzubauen, druckt dieser Befehl die Namen und Signaturen aller APKs im aktuellen Verzeichnis (ich verwende sh, weil ich später die Ausgabe an grep weiterleiten muss):
find . -name "*.apk" -exec echo "APK: {}" \; -exec sh -c 'keytool -printcert -jarfile "{}"' \;
Beispielausgabe:
Oder wenn Sie sich nur für SHA1 interessieren:
find . -name "*.apk" -exec echo "APK: {}" \; -exec sh -c 'keytool -printcert -jarfile "{}" | grep SHA1' \;
Beispielausgabe:
quelle
Viel einfachere Möglichkeit, das Signaturzertifikat anzuzeigen:
Dies zeigt nur den DN an. Wenn Sie also zwei Zertifikate mit demselben DN haben, müssen Sie möglicherweise anhand des Fingerabdrucks vergleichen.
quelle
Es gibt viele Freewares, um die Zertifikate und Schlüsselspeicher zu untersuchen, z. B. KeyStore Explorer .
Entpacke die apk und öffne die META-INF /?. RSA-Datei. ? soll CERT oder ANDROID sein oder kann etwas anderes sein. Es werden alle Informationen angezeigt, die mit Ihrer apk verknüpft sind.
quelle
Sie können dies mit dem
apksigner
Tool tun , das Teil des Android SDK ist:apksigner verify --print-certs my_app.apk
Sie finden apksigner im Verzeichnis build-tools. Beispielsweise:
~/Library/Android/sdk/build-tools/29.0.1/apksigner
quelle