Comment obtenir l'empreinte digitale du certificat de signature (SHA1) pour OAuth 2.0 sur Android?


154

J'essaie d'enregistrer mon application Android en suivant les étapes de https://developers.google.com/console/help/#installed_applications, ce qui m'amène à suivre http://developer.android.com/tools/publishing/app- signature.html .

Cependant, je ne sais pas comment obtenir l'empreinte du certificat de signature (SHA1).

J'ai d'abord utilisé le plugin Eclipse ADT pour exporter et créer le keystore / key. Ensuite, j'ai essayé de le faire keytool -list keystore mykeystore.keystoreet cela me donne une empreinte digitale de certificat MD5. Dois-je refaire la signature (ce qui signifie que je ne peux pas utiliser l'assistant d'exportation Eclipse)?

Puis-je utiliser d'abord un certificat de débogage?


Avant d'exporter / télécharger votre application, utilisez la réponse de user2453771. Après l'exportation / le téléchargement, utilisez la réponse de frederick nyawaya. Souvenez-vous de cela et épargnez-vous quelques heures de douleur.
SmulianJulian

comment générer un keystore apk de version à l'aide du terminal linux
Manish

1
Le moyen le plus simple d'obtenir SHA-1 pour la sortie et le mode de débogage du studio android. Check this
Naeem Ibrahim

Réponses:


174

Démarrez un processus d'exportation pour créer un apk pour votre application et utilisez votre clé de production. La toute dernière page affiche les empreintes digitales de vos certificats SHA1 et MD5entrez la description de l'image ici


2
MD5 apparaît maintenant dans logcat (pas dans la fenêtre lors de la création).
Outil

4
Effectuez le processus d'exportation deux fois. Il sera montré au deuxième tour.
keybee

Existe-t-il un moyen d'en créer un nouveau en utilisant cette méthode? J'ai essayé de le faire, mais mon ancien fichier de keystore est là, mais je pense que ce n'est pas le bon (j'ai besoin d'un certificat de débogage, pas d'un certificat de version), plus j'ai oublié le mot de passe. > _ <Merci si vous avez un conseil.
Azurespot

REMARQUE: il n'est pas nécessaire d'exporter complètement un .apk. Vous pouvez annuler à ce stade après avoir copié le SHA1 pour éviter de créer des .apks inutiles.
GraSim

139

Je sais que cette question a reçu une réponse, mais c'est ainsi que j'ai trouvé ma signature pour le magasin de clés par défaut. Dans Eclipse, si vous allez dans Windows -> Préférences -> Android -> Build

entrez la description de l'image ici


5
Cela devrait être la réponse acceptée, car c'est le moyen le plus simple.
Mustafa

3
pour le keystore par défaut / debug, pas le keystore de production
Frederick Nyawaya

3
Les gars, veuillez noter que la réponse sûre est celle de @frederick nyawaya. Si votre application avait des magasins de clés de construction et de publication différents (ce qui est la plupart du temps le cas, la carte ne fonctionnera PAS sur vos clients. Et Dieu sait quand vous le saurez car cela fonctionne bien sur votre propre ordinateur. Soyez prudent. C'est facile, mais vous risquez de finir par avoir un service de carte qui ne fonctionne pas sur vos appareils clients.
Tina

92

Je pense que cela fonctionnera parfaitement. J'ai utilisé le même:

Pour Android Studio:

  1. Cliquez sur Build > Generate Signed APK .
  2. Vous obtiendrez une boîte de message, cliquez simplement sur OK.
  3. Maintenant, il y aura une autre fenêtre juste copier le chemin du magasin de clés .
  4. Ouvrez maintenant une invite de commande et accédez à C: \ Program Files \ Java \ jdk1.6.0_39 \ bin> (ou à toute version de jdk installée).
  5. Tapez keytool -list -v -keystore , puis collez votre chemin d'accès au magasin de clés (par exemple, C: \ Program Files \ Java \ jdk1.6.0_39 \ bin> keytool -list -v -keystore "E: \ Mes projets \ Android \ android studio \ apks signés \ Hello World \ HelloWorld.jks ").
  6. Maintenant, il demandera le mot de passe du magasin de clés , fournira le vôtre et appuyez sur Enterpour obtenir vos clés de certificat SHA1 et MD5.

fichier de keystore créé via une autre machine puis-je obtenir sh1 avec le même fichier de stockage de clés avec la procédure ci-dessus sur une machine différente
Mahendra Dabi

Merci beaucoup
Hiren

74

Si vous utilisez Mac ou même Linux, copiez et collez simplement ceci sur l' application Terminal et vous obtiendrez immédiatement la clé SHA1. Pas besoin de changer quoi que ce soit.

 keytool -list -v -keystore ~/.android/debug.keystore -alias androiddebugkey -storepass android -keypass android

Exemple de sortie:

Alias name: androiddebugkey
Creation date: 17 Feb 12
Entry type: PrivateKeyEntry
Certificate chain length: 1
Certificate[1]:
Owner: CN=Android Debug, O=Android, C=US
Issuer: CN=Android Debug, O=Android, C=US
Serial number: 4f3dfc69
Valid from: Fri Feb 17 15:06:17 SGT 2012 until: Sun Feb 09 15:06:17 SGT 2042
Certificate fingerprints:
     MD5:  11:10:11:11:11:11:11:11:11:11:11:11:11:11:11:11
     SHA1: 11:11:11:11:11:11:11:11:11:11:11:11:11:11:11:11:11:11:01:11
     Signature algorithm name: SHA1withRSA
     Version: 3

Exemple @yuku s'il vous plaît. /home/desktop/././. , abc.jks, quel mot de passe n tout, avons-nous besoin de tous ces détails ??
Prabs du

Merci. Seulement c'est le moyen le plus simple.
Sayka

Vous avez en fait sauvé ma journée. Merci beaucoup.
Karan Nagpal

keytool -list -v -keystore my-release-key.keystore
Snow Bases

Le keystore JKS utilise un format propriétaire. Il est recommandé de migrer vers PKCS12 qui est un format standard de l'industrie en utilisant "keytool -importkeystore -srckeystore <use-existing-key-store path> / <variant-name> .keystore -destkeystore <new-key-store path> / < nom-variant> .keystore -deststoretype pkcs12 ".
Arpit J.

68

utilisez ceci dans la ligne de commande

c:\Program Files\Java\jdk1.6.25\bin>keytool -list -v -keystore c:\you_key_here.key

1
Je pensais que c'était la manière la plus simple et pourtant la plus standard, car de plus en plus de personnes migrent vers IntelliJ / Studio et n'ont pas accès à la facilité d'Eclipse / ADT. Salut mon pote !!
Pantalon Himadri du

Pourquoi il me demande un mot de passe
Abhijit Chakra

J'ai eu, accès refusé.!
sudhakar phad

59

Ouvrez le terminal (sous Unix , sous MAC ), ( cmdsous Windows ) et cdvers ce chemin (votre java):

C:\Program Files\Java\jdk1.6.0_43\bin>

Exécutez cette commande:

keytool -list -v -keystore C:\Users\leon\.android\debug.keystore -alias androiddebugkey -storepass android -keypass android

Changez simplement le chemin vers debug.keystoreet vous obtiendrez les empreintes digitales MD5 et SHA-1.


40
keytool -list -v -keystore "keyStoreName"

Exécutez cette commande à partir du répertoire où se trouve le fichier de clés de votre application.


Cela peut être utilisé pour obtenir le SHA1 de votre application cliente que vous exporterez et publierez. C'est probablement différent de celui que vous voyez dans eclipse, qui est un keystore de débogage.
dannyhan12

29

Dans Android Studio, procédez comme suit:

  1. Cliquez sur le menu des propriétés Gradle sur le côté droit de votre IDE de studio Android.
  2. Développez l'arborescence des tâches.
  3. Cliquez sur signatureReport Vous pouvez voir votre SHA1 sur la console du bas

entrez la description de l'image ici


13

Voyez si vous souhaitez utiliser Google Mapà ce moment-là vous avez besoin d'une MD5empreinte digitale pour générerapi kay pour utiliser google map dans votre application Android.

La commande Keytool a généré une MD5empreinte digitale si vous utilisez JDK 1.6et elle génère une SHA1empreinte digitale si vous utilisez JDK 1.7.

Donc, si vous voulez signer votre application pour la publication, lisez ceci .

Et si vous souhaitez utiliser, google-maplisez ceci .


Merci pour la rediffusion Akshay. Apparemment, j'avais besoin d'ajouter -v à ma commande keytool pour afficher les autres empreintes digitales du certificat. De plus, apparemment, je peux utiliser un certificat de débogage pour créer un ID client.
Alex

1
La plupart. J'ai résolu mon problème de création d'un ID client. Cependant, je suis nouveau sur OAuth en général et pas sur le fonctionnement des certificats et des empreintes digitales. Je suppose qu'un certificat peut avoir à la fois une empreinte digitale MD5 et SHA1? Au moins c'est ce que j'obtiens quand je fais la keytool -list -v etccommande
Alex

12

Si vous utilisez IntelliJ (12+?), Allez dans le menu Construire / Générer une API signée

Après avoir rempli une fenêtre contextuelle, récupérez les données dans le champ "chemin du magasin de clés" (par exemple C: \ Users \ user \ Documents \ store \ store)

Et exécutez dans une ligne de commande:

>keytool -list -v -keystore "C:\Users\user\Documents\store\store"

....
         MD5: 11:C5:09:73:50:A4:E5:71:A2:26:13:E0:7B:CD:DD:6B
    -->  SHA1: 07:0B:0E:E8:F7:22:59:72:6A:1C:68:05:05:CF:2E:6F:59:43:48:99
         SHA256: E6:CE:DA:37:C1:18:43:C1:A3:F0:9E:8F:1A:C2:69:AF:E6:41:F7:C0:18:
1D:1D:55:5D:F0:52:6C:EE:77:84:A7
...

Bonne chance


12

Si quelqu'un utilise le studio Android ...

cliquez sur: Build> Generate Signed in APK Créer une nouvelle clé: cela générera des fichiers ".jks"

Utilisez la commande suivante pour lire les données (SHA1 et autres informations):

$ keytool -list -v -keystore nomfichier.jks


$keytool -keystore filename.jks | openssl sha1 -binary | openssl base64
Astuce

4

Pour ceux qui utilisent OpenSSL, vous pouvez récupérer l'empreinte SHA1 de cette façon:

OpenSSL> dgst -sha1 my-release-key.keystore

Ce qui entraînerait la sortie suivante:

entrez la description de l'image ici


4

Si vous utilisez Android Studio. Vous n'avez pas besoin de générer une empreinte SHA1 à l'aide de l'invite cmd. Il vous suffit de créer un projet avec l'activité Maps par défaut d'Android Studio.Dans le projet, vous pouvez obtenir l'empreinte digitale dans google_maps_api.xml sous le dossier Values. J'espère que ceci vous aidera. :)

entrez la description de l'image ici


4

Voici ma solution simple pour cela:

Cliquer sur Gradle bouton, vous pouvez trouver en haut à droite. vous verrez tous les fichiers gradle. Maintenant, allez sur Android et double-cliquez sur SigningReport. Une fois la construction du gradle terminée, vous voyez la clé SHA. Consultez les images ci-dessous pour un guide étape par étape.

Une fois que vous avez cliqué sur Gradle, vérifiez les images ci-dessous. J'espère que cela aide quelqu'un.

ÉTAPE 1:

Image Première étape

ÉTAPE 2:

Image Deuxième étape


3

Si vous utilisez Android Studio. Vous pouvez obtenir rapidement l' empreinte du certificat SHA1 (débogage, publication ... tous les types de build !!) via les tâches Gradle :

signatureRapport

SHA1 est affiché dans les journaux de messages

Le plugin Android (configuré dans l'application Gradle) crée un mode de débogage par défaut.

com.android.application

Route du fichier vers le magasin de clés:

HOME / .android / debug.keystore

Je recommande d' attacher debug.keystore à build.gradle. Pour ce faire, placez un fichier debug.keystore dans un dossier d'application, puis ajoutez SigningConfigs dans l'application gradle:

apply plugin: 'com.android.application'

    android {
        ................
        signingConfigs {
            debug {
                storeFile file("../app/debug.keystore")
                storePassword "android"
                keyAlias "androiddebugkey"
                keyPassword "android"
            }
            release {
                storeFile file("../app/debug.keystore")
                storePassword "android"
                keyAlias "androiddebugkey"
                keyPassword "android"
            }
        }    
        ........
    }

Extra: si vous souhaitez créer pour publication, placez un fichier release.keystore dans un dossier d'application. (Cet exemple utilise le même debug.keystore)


3

Essayez celui-ci: Windows ---- préférences ---- Android - build --- copie de code sh1 à partir d'ici


3

J'étais tellement déroutant la première fois, mais je vous propose une solution de travail finale pour Windows:

1) Ouvrez cmd et accédez à votre répertoire Java / jdk / bin (appuyez simplement sur cd ..pour revenir d'un dossier et cd NAME_FOLDERavancer d'un dossier), dans mon cas, le dossier final:C:\Program Files\Java\jdk1.8.0_73\bin> entrez la description de l'image ici

2) Tapez maintenant cette commande keytool -list -v -keystore C:\Users\YOUR_WINDOWS_USER\.android\debug.keystore -alias androiddebugkey -storepass android -keypass android

En conséquence, vous devez obtenir quelque chose comme ceci: entrez la description de l'image ici


2

Je pense que cela fonctionnera parfaitement. J'ai utilisé le même:

Pour Android Studio:

Cliquez sur Build> Generate Signed APK. Vous obtiendrez une boîte de message, cliquez simplement sur OK.

Maintenant, il y aura une autre fenêtre juste copier le chemin du magasin de clés.

Ouvrez maintenant une invite de commande et accédez à C: \ Program Files \ Java \ jdk1.6.0_39 \ bin> (ou à toute version de jdk installée).

Tapez keytool -list -v -keystore, puis collez votre chemin d'accès au magasin de clés (par exemple, C: \ Program Files \ Java \ jdk1.6.0_39 \ bin> keytool -list -v -keystore "E: \ Mes projets \ Android \ android studio \ apks signés \ Hello World \ HelloWorld.jks ").

Maintenant, il demandera le mot de passe du magasin de clés, fournira le vôtre et appuyez sur Entrée pour obtenir vos clés de certificat SHA1 et MD5.

Ajoutez maintenant cette clé SHA1 à la console des développeurs Google dans l'onglet Informations d'identification et modifiez également les variantes de construction dans Android Studio en mode de sortie.


impossible de saisir le mot de passe du magasin de clés que je saisis mais le mot de passe n'a pas été saisi dans l'invite de commande
Mahendra Dabi

Le mot de passe n'est pas visible, tapez simplement votre mot de passe correctement et appuyez sur Entrée, vous obtiendrez vos clés
Rishab Jain

merci j'ai entré un mauvais mot de passe maintenant c'est du travail merci les gars
Mahendra Dabi

1

Pour ceux sur Mac à la recherche de keytool. Suivez ces étapes:

Assurez-vous tout d'abord d'installer Java JDK http://docs.oracle.com/javase/7/docs/webnotes/install/mac/mac-jdk.html

Tapez ensuite ceci dans l'invite de commande:

/usr/libexec/java_home -v 1.7

il crachera quelque chose comme:

/Library/Java/JavaVirtualMachines/jdk1.7.0_51.jdk/Contents/Home

keytool se trouve dans le même répertoire que javac. c'est à dire:

/Library/Java/JavaVirtualMachines/jdk1.7.0_51.jdk/Contents/Home/bin

Depuis le répertoire bin, vous pouvez utiliser le keytool.


1

Si vous êtes sur Mac / Linux, vous pouvez obtenir l'empreinte digitale SHA1 en écrivant la ligne suivante dans le terminal:

keytool -list -v -keystore ~/.android/debug.keystore -alias androiddebugkey -storepass android -keypass android

Il y a 2 choses possibles après cela

  1. Il vous demandera le mot de passe

    Tapez simplement

Android

et appuyez sur Entrée, vous pouvez trouver la touche SHA1 dans la sortie ci-dessous.

  1. Il vous demandera de télécharger un programme approprié (et une liste sera donnée)

    Tapez simplement suivant dans le terminal

sudo apt installer openjdk-8-jre-headless

puis exécutez à nouveau suivant dans le terminal: keytool -list -v -keystore ~/.android/debug.keystore -alias androiddebugkey -storepass android -keypass android

Cette fois, vous serez conduit à l'étape 1, où vous devez simplement entrer le mot de passe comme

Android

et vous obtiendrez votre empreinte digitale SHA1 ci-dessous dans la sortie.


0

Utilisation de portecle :

  • Fichier> Ouvrir le fichier Keystore
  • Entrez le mot de passe Keystore
  • Faites un clic droit sur le nom de l'alias> Détails du certificat> Empreinte SHA-1


0

Je voulais envoyer un avis à ceux qui ont le même problème que moi. J'ai suivi les étapes pour générer mon débogage SHA-1 et ma version SHA-1. J'essayais de connecter l'API de connexion Google à mon application.

J'ai rencontré le problème que le .apk de débogage fonctionnerait correctement, il se connecterait et s'authentifierait avec Google Sign-In. Ma version .apk fonctionnerait également, lorsqu'elle était installée manuellement sur le téléphone. Lorsque j'ai publié ma version .apk sur le Google Play Store, ma connexion à Google ne s'authentifiait pas et j'obtenais un problème!

Pendant très longtemps, je n'ai pas pu le comprendre, mais j'ai constaté que mon application était signée par Google, c'est-à-dire que le message en haut de la console développeur était affiché: la signature d'applications Google Play est activée pour cette application.

Je suis allé à mon onglet Gestion des versions, puis j'ai fait défiler jusqu'à Signature d'application et j'ai trouvé le SHA-1. Après avoir ajouté cela à mon code et sur la "console Firebase" que j'utilisais comme backend pour la connexion à Google, tout semblait fonctionner. Il semble que mon keystore de version soit remplacé par le certificat signé Google ... Je ne sais pas vraiment si c'est ce qui se passait, mais cela a résolu mon problème et a permis à l'apk de ma version Google Play Store de s'authentifier correctement avec le signe Google dans!


0

Solution étape par étape:

  1. Ouvrez votre invite de commande ou Terminal pour Mac
  2. Remplacez le répertoire par le répertoire de l'emplacement du fichier keytool. Changez de répertoire en utilisant la commande cd <directory path>. (Remarque: si un nom de répertoire contient de l'espace, ajoutez-le \entre les deux mots. Exemple cd /Applications/Android\ Studio.app//Contents/jre/jdk/Contents/Home/bin/)

    • Pour trouver l'emplacement de votre keytool, vous allez dans le studio android .. ouvrez votre projet. Et allez à

    • Fichier> Structure du projet> Emplacement du SDK..et recherchez l'emplacement du JDK.

  3. Exécutez l'outil keytool par cette commande: keytool -list -v –keystore <your jks file path>(Remarque: si un nom de répertoire a de l'espace, ajoutez \ entre les deux mots. Exemple keytool -list -v -keystore /Users/username/Desktop/tasmiah\ mobile/v3/jordanos.jks)

  4. La commande vous invite à entrer le mot de passe .. alors entrez votre mot de passe .. puis vous obtenez le résultat


0

Voici un outil pour les codeurs paresseux:

1 ajouter une dépendance:

compile 'com.vk:androidsdk:1.6.9'

2 ajoutez les lignes suivantes quelque part dans votre activité / application:

String[] fingerprints = VKUtil.getCertificateFingerprint(this, getPackageName()); 
Log.d("SHA1", fingerprints[0]);

3 Ouvrez logcat et récupérez le message.

4 Profit!


0
  1. Ouvrez votre invite de commande
  2. Naviguez dans le répertoire de travail vers 1.8.0 / bin
  3. pâte keytool -list -v -alias androiddebugkey -keystore %USERPROFILE%\.android\debug.keystore
  4. Appuyez sur Entrée si elle vous demande un mot de passe

0

Si vous souhaitez obtenir la clé fingerprint-sha1 à partir du fichier keystore.jks de signature Exécutez la commande suivante à partir du terminal:

keytool -list -v -keystore <.../path/keystore.jks>

Exemple

keytool -list -v -keystore /Users/Home/Projects/Keystore/myApp_keystore.jks
Enter keystore password: 

Keystore type: JKS
Keystore provider: SUN

Your keystore contains 1 entry

Alias name:myApp_alias
Owner: CN=xxx, OU=xxx Dev, O=ZZZ, L=Dhaka, ST=Dhaka, C=BD
..........


Certificate fingerprints:
MD5:  12:10:11:12:11:11:11:11:11:11:33:11:11:11:11:11
SHA1: 11:44:11:11:55:11:17:11:11:66:11:11:88:11:11:77:11:11:01:11
.....................

0

Veuillez cliquer sur Gradle à partir du côté droit du menu, puis cliquez sur: app Puis cliquez sur le dossier android Puis le nom du fichier SigningReport existe là Double-cliquez dessus. Il commencera à s'exécuter et dans un moment il vous montrera le code SHA-1 Copiez simplement le code. Et collez-le là où vous en avez besoin

Rapport de signature mis en évidence dans l'image

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.