Vérification du keystore Android : SHA1/SHA256 avec keytool

Vérification du keystore Android : SHA1/SHA256 avec keytool

Introduction

L'inspection du keystore revient constamment pendant le développement et la publication Android :

  • Play Console exige SHA1/SHA256
  • La configuration Firebase nécessite l'empreinte
  • Vérifier qu'un APK est signé avec la bonne clé

Voici une référence pour les commandes que vous utiliserez dans chacune de ces situations.


De base : Voir toutes les informations du keystore

keytool -list -v -keystore your-keystore.jks

Après avoir saisi votre mot de passe, vous verrez une sortie comme celle-ci :

Keystore type: JKS
Keystore provider: SUN

Your keystore contains 1 entry

Alias name: mykey
Creation date: Jan 1, 2024
Entry type: PrivateKeyEntry
Certificate chain length: 1
Certificate[1]:
  Owner: CN=My App, OU=Development, O=My Company
  SHA1:   AB:CD:EF:12:34:56:...
  SHA256: 01:23:45:67:89:AB:...

Les valeurs SHA1 et SHA256 sont les empreintes que vous enregistrez dans Firebase et Play Console.


Vérifier uniquement le nom d'alias

keytool -list -keystore release.jks

Omettre -v donne une vue compacte — utile quand vous avez juste besoin du nom d'alias et du type d'entrée.


Vérifier quelle clé a signé un APK

Inspecter les informations de signature d'un APK existant :

apksigner verify --print-certs app-release.apk

Ou :

keytool -printcert -jarfile app-release.apk

Cela vous permet de confirmer le SHA1/SHA256 de l'APK — utile pour vérifier "cet APK a-t-il été signé avec la bonne clé ?"


Vérification du debug.keystore

Android Studio génère automatiquement un debug.keystore à un emplacement par défaut.

Emplacement :

C:\Users\<username>\.android\debug.keystore   (Windows)
~/.android/debug.keystore                       (Mac/Linux)

Commande :

# Windows
keytool -list -v -keystore %USERPROFILE%\.android\debug.keystore

# Mac/Linux
keytool -list -v -keystore ~/.android/debug.keystore

Valeurs par défaut :

Élément Valeur
Mot de passe android
Alias androiddebugkey
Validité 30 ans

Vérification de la configuration de signature dans build.gradle

Pour voir quel keystore votre build utilise, regardez la section signingConfigs dans app/build.gradle.

Groovy (build.gradle) :

signingConfigs {
    release {
        storeFile file("release.jks")
        storePassword "xxxxx"
        keyAlias "mykey"
        keyPassword "xxxxx"
    }
}

Kotlin (build.gradle.kts) :

signingConfigs {
    create("release") {
        storeFile = file("release.jks")
        storePassword = System.getenv("STORE_PASSWORD")
        keyAlias = "mykey"
        keyPassword = System.getenv("KEY_PASSWORD")
    }
}

Lire les mots de passe depuis des variables d'environnement plutôt que les coder en dur est l'approche sûre pour les environnements CI/CD.


Si keytool n'est pas trouvé sous Windows

'keytool' is not recognized as an internal or external command

Cette erreur signifie que le répertoire bin du JDK n'est pas dans votre PATH.

Option 1 : Exécuter avec le chemin complet

"C:\Program Files\Java\jdk-17\bin\keytool.exe" -list -v -keystore release.jks

Option 2 : Ajouter au PATH (correction permanente)

  1. Ouvrir les propriétés système → Variables d'environnement
  2. Ajouter C:\Program Files\Java\jdk-17\bin à Path
  3. Redémarrer votre terminal

Option 3 : Utiliser le JDK fourni avec Android Studio

"C:\Program Files\Android\Android Studio\jbr\bin\keytool.exe" -list -v -keystore release.jks

Android Studio est livré avec un JDK, donc si vous l'avez installé, cela fonctionne toujours.


Résumé

Objectif Commande
Voir toutes les infos keystore keytool -list -v -keystore xxx.jks
Vérifier uniquement le nom d'alias keytool -list -keystore xxx.jks
Vérifier la signature APK apksigner verify --print-certs xxx.apk
Vérifier debug.keystore keytool -list -v -keystore %USERPROFILE%\.android\debug.keystore

La prochaine fois que vous aurez besoin de SHA1/SHA256 pour la configuration Firebase ou Play Console, ces commandes vous y mèneront rapidement.