Blog
Comment obtenir votre empreinte SHA-1 et SHA-256 (keytool, Firebase)
Publié le: Mis à jour le: 7 min de lecture
Qu'est-ce qu'une empreinte SHA-1/SHA-256, et où est-elle nécessaire ?
Une empreinte est une valeur de hachage dérivée du certificat qui signe votre application ; elle prouve quel certificat a produit un paquet donné. Chaque paire keystore/alias pour une application Android produit sa propre empreinte — la même application signée avec un keystore différent donne un SHA-1 différent.
Cette valeur est le plus souvent nécessaire à trois endroits : lors de l'ajout d'une application Android dans la console Firebase (pour des fonctionnalités comme Google Sign-In, Phone Authentication, App Check), lors de la restriction d'une clé API Maps SDK for Android par nom de paquet + SHA-1 dans Google Cloud Console, et dans le fichier assetlinks.json que vous hébergez sur votre serveur pour la vérification automatique des Android App Links.
SHA-1 est demandé depuis longtemps pour des scénarios classiques comme Google Sign-In et la restriction de clé API Maps ; SHA-256 est requis pour la vérification des App Links (assetlinks.json) et certaines fonctionnalités Firebase plus récentes. La commande keytool -list -v affiche les deux dans la même sortie, donc une seule commande couvre celui qui vous est demandé.
Obtenir le SHA depuis votre keystore debug
Android Studio et Flutter génèrent automatiquement un keystore debug pour le développement local, livré avec des informations fixes : il se trouve à ~/.android/debug.keystore sur macOS/Linux, et à C:\Users\<VotreNomUtilisateur>\.android\debug.keystore sur Windows ; l'alias est toujours androiddebugkey, et le mot de passe du dépôt comme celui de la clé sont tous deux android.
Avec ces informations, la commande est : keytool -list -v -keystore ~/.android/debug.keystore -alias androiddebugkey -storepass android -keypass android. La sortie affiche des lignes « SHA1: » et « SHA256: », toutes deux formatées en paires hexadécimales séparées par des deux-points.
Cette empreinte ne fonctionne que pour les builds debug ; le keystore debug est également spécifique à la machine — le debug.keystore de chaque développeur et de chaque machine CI produit un SHA-1 différent. Si vous travaillez en équipe, chaque membre (et le CI) doit ajouter séparément son propre SHA-1 debug à Firebase ; c'est la cause la plus fréquente de « Google Sign-In fonctionne chez moi mais pas chez mon collègue ».
Obtenir le SHA depuis votre keystore release/upload
Si vous avez déjà un keystore release ou upload (nous expliquons comment en créer un avec keytool dans notre autre guide), la commande a la même forme — pointez-la simplement vers votre propre fichier et alias : keytool -list -v -keystore /chemin/vers/votre/upload-keystore.jks -alias upload. Elle demandera le mot de passe du dépôt que vous avez défini lors de la création du keystore.
Vous pouvez lire ces informations dans votre fichier android/key.properties (storeFile, keyAlias) ; saisir le mot de passe de manière interactive lorsqu'il est demandé, plutôt que de le passer en ligne de commande, évite de le laisser en texte clair dans votre historique de terminal.
Le SHA-1/SHA-256 ainsi produit appartient à votre « upload key ». Si votre application est inscrite à Play App Signing (obligatoire pour les nouvelles applications depuis 2021), cette valeur peut NE PAS correspondre à la signature réelle du paquet distribué aux utilisateurs — la section suivante traite de cela.
Sous Play App Signing : debug vs. upload vs. app signing key (l'erreur n° 1)
Avec Play App Signing activé, vous signez l'AAB avec votre propre upload key, mais Google Play re-signe le paquet avec sa propre « app signing key » avant de le distribuer aux utilisateurs. Résultat : le certificat de l'application réelle que les utilisateurs téléchargent depuis la boutique ne correspond PAS au SHA-1 que vous extrayez de votre keystore upload local.
C'est exactement l'erreur la plus courante : un développeur ajoute le SHA-1 de son keystore upload local à Firebase, tout fonctionne sur son propre appareil et dans les builds de test internes, mais pour les vrais utilisateurs qui téléchargent depuis le Play Store, Google Sign-In ou l'API Maps échoue silencieusement — car le paquet de la boutique porte un certificat différent.
Obtenez les bonnes valeurs depuis l'écran Protected with Play > Play Store protection > Manage Play app signing de Play Console, qui liste deux certificats distincts : le « App signing key certificate » (la signature réelle que reçoivent les utilisateurs) et le « Upload key certificate ». Les deux affichent leurs propres valeurs SHA-1, SHA-256 et MD5 sur cet écran.
La solution pratique : Firebase vous permet d'enregistrer plusieurs empreintes par application Android. Ajoutez en même temps le SHA-1 du keystore debug, le SHA-1 de l'upload key ET le SHA-1 de l'app signing key ; ainsi, le développement local, les builds de test internes distribués directement en APK, et les installations réelles depuis le Play Store s'authentifient tous correctement.
Ajouter l'empreinte SHA à Firebase
Allez dans Firebase Console > Project settings (l'icône d'engrenage) > « Your apps », trouvez la carte de votre application Android, repérez le champ « SHA certificate fingerprints », ajoutez-y la valeur SHA-1 ou SHA-256 issue de la sortie de keytool, puis enregistrez. Vous pouvez ajouter autant d'empreintes que nécessaire à la même carte d'application.
Lors du collage, copiez la sortie de keytool exactement telle qu'affichée (paires hexadécimales séparées par des deux-points) ; Firebase accepte la valeur avec ou sans deux-points, mais la retaper à la main laisse place à des erreurs de transcription. Pour certaines fonctionnalités dépendant du SHA comme Google Sign-In ou App Check, il est recommandé de retélécharger le fichier google-services.json mis à jour et de le replacer dans votre projet après avoir ajouté une empreinte.
Comme le Coffre Keystore Vibeloy stocke votre fichier keystore et vos mots de passe avec un chiffrement de bout en bout, il vous permet de consulter et copier vos valeurs SHA-1/SHA-256 en un clic depuis le coffre, sans avoir à chercher le chemin du fichier et le mot de passe chaque fois que vous avez besoin de keytool. Il s'agit d'une fonctionnalité premium de Vibeloy.
Questions fréquentes
- Pourquoi mes valeurs SHA-1 debug et release sont-elles différentes ?
- Parce qu'elles proviennent de keystores différents. Le keystore debug est généré automatiquement et spécifique à la machine, tandis que le keystore release/upload est la clé permanente que vous avez créée vous-même. Il est normal que leurs empreintes diffèrent ; vous devez ajouter les deux séparément à Firebase.
- Dois-je utiliser SHA-1 ou SHA-256 ?
- Utilisez celui que la fonctionnalité que vous intégrez demande ; en cas de doute, ajoutez les deux. La commande keytool -list -v affiche déjà les deux dans la même sortie, vous n'avez donc pas besoin d'exécuter une commande séparée pour chacun.
- Sous Play App Signing, quel SHA dois-je ajouter à Firebase ?
- Ajoutez à la fois le SHA de votre upload key et le SHA de l'app signing key — vous pouvez obtenir les deux depuis l'écran Protected with Play > Play Store protection > Manage Play app signing de Play Console. N'ajouter que la valeur de votre keystore upload local fera échouer la fonctionnalité pour les vrais utilisateurs qui téléchargent depuis le Play Store.
- J'obtiens « command not found » en exécutant keytool — que dois-je faire ?
- keytool est fourni avec le JDK et ne peut pas être trouvé directement s'il n'est pas dans votre PATH. Sur macOS/Linux, le JDK est généralement déjà dans le PATH ; sinon, pointez vers le répertoire bin du JDK installé par Android Studio. Sous Windows, le moyen le plus fiable est d'exécuter flutter doctor -v et de repérer la ligne « Java binary at: » dans sa sortie pour localiser le répertoire bin de ce JDK ; supposer « %JAVA_HOME%\bin\keytool » peut être trompeur si la variable n'est pas définie ou si plusieurs JDK sont installés.
- Combien de temps faut-il pour qu'une empreinte ajoutée à Firebase devienne active ?
- Elle devient généralement active en quelques minutes. Pour certaines fonctionnalités comme Google Sign-In ou App Check, vous devrez peut-être retélécharger le fichier google-services.json mis à jour et le replacer dans votre projet après l'avoir ajoutée ; sinon, l'ancien fichier ne reconnaîtra pas la nouvelle empreinte.
Outil associé
Ouvrir le coffre Keystore Vibeloy