J'ai une application signée et plusieurs fichiers de clés. Je voudrais mettre à jour l'application, j'ai donc besoin de savoir laquelle des clés a été utilisée.
Comment puis-je faire correspondre le magasin de clés utilisé pour signer mon application à l'origine avec les différents magasins de clés que j'ai sur ma machine?
Réponses:
Tout d'abord, décompressez l'APK et extrayez le fichier /META-INF/ANDROID_.RSA (ce fichier peut également être CERT.RSA, mais il ne doit y avoir qu'un seul fichier .RSA).
Exécutez ensuite cette commande:
Vous obtiendrez des empreintes digitales de certificat comme ceci:
Utilisez ensuite à nouveau le keytool pour imprimer tous les alias de votre magasin de clés de signature:
Vous obtiendrez une liste des alias et leur empreinte digitale de certificat:
Voila! nous pouvons maintenant déterminer que l'apk a été signé avec ce magasin de clés et avec l'alias 'android_key'.
Keytool fait partie de Java, alors assurez-vous que votre PATH contient le répertoire d'installation Java.
la source
Vous pouvez utiliser l'outil de gestion des clés et des certificats de Java 7
keytool
pour vérifier la signature d'un fichier de clés ou d'un fichier APK sans extraire aucun fichier.Signature d'un APK
La sortie révélera le propriétaire / émetteur de la signature et les empreintes digitales MD5, SHA1 et SHA256 du fichier APK
app.apk
.(Notez que l'
-jarfile
argument a été introduit dans Java 7; consultez la documentation pour plus de détails.)Signature d'un magasin de clés
La sortie révélera les alias (entrées) dans le fichier de clés
release.jks
, avec les empreintes digitales du certificat (MD5, SHA1 et SHA256).Si les empreintes digitales SHA1 entre l'APK et le magasin de clés correspondent, vous pouvez être assuré que cette application est signée avec la clé.
la source
-jarfile
argument a été introduit avec Java 7. J'ai mis à jour la réponse.Pour s'appuyer sur la réponse de Paul Lammertsma, cette commande affichera les noms et signatures de tous les fichiers APK dans le répertoire actuel (j'utilise sh car plus tard, je dois rediriger la sortie vers grep):
find . -name "*.apk" -exec echo "APK: {}" \; -exec sh -c 'keytool -printcert -jarfile "{}"' \;
Exemple de sortie:
Ou si vous vous souciez juste de SHA1:
find . -name "*.apk" -exec echo "APK: {}" \; -exec sh -c 'keytool -printcert -jarfile "{}" | grep SHA1' \;
Exemple de sortie:
la source
Un moyen beaucoup plus simple d'afficher le certificat de signature:
Cela ne montrera que le DN, donc si vous avez deux certificats avec le même DN, vous devrez peut-être comparer par empreinte digitale.
la source
Il existe de nombreux logiciels gratuits pour examiner les certificats et les magasins de clés tels que KeyStore Explorer .
Décompressez l'apk et ouvrez le fichier META-INF / ?. RSA. ? doit être CERT ou ANDROID ou peut être autre chose. Il affichera toutes les informations associées à votre apk.
la source
Vous pouvez le faire avec l'
apksigner
outil qui fait partie du SDK Android:apksigner verify --print-certs my_app.apk
Vous pouvez trouver apksigner dans le répertoire build-tools. Par exemple:
~/Library/Android/sdk/build-tools/29.0.1/apksigner
la source