Wie erhalte ich den Fingerabdruck des Signaturzertifikats (SHA1) für OAuth 2.0 unter Android?


154

Ich versuche, meine Android-App gemäß den Schritten in https://developers.google.com/console/help/#installed_applications zu registrieren. Dies führt mich dazu, http://developer.android.com/tools/publishing/app- zu folgen. signieren.html .

Ich bin mir jedoch nicht sicher, wie ich den Fingerabdruck des Signaturzertifikats (SHA1) erhalten soll.

Ich habe zuerst das Eclipse ADT-Plugin verwendet, um den Schlüsselspeicher / Schlüssel zu exportieren und zu erstellen. Dann habe ich es versucht keytool -list keystore mykeystore.keystoreund es gibt mir einen MD5-Zertifikat-Fingerabdruck. Muss ich die Signatur wiederholen (dh ich kann den Eclipse-Exportassistenten nicht verwenden)?

Kann ich zuerst ein Debug-Zertifikat verwenden?


Verwenden Sie vor dem Exportieren / Hochladen Ihrer App die Antwort von user2453771. Verwenden Sie nach dem Exportieren / Hochladen die Antwort von frederick nyawaya. Denken Sie daran und sparen Sie sich ein paar Stunden Schmerzen.
SmulianJulian

wie man Release apk Keystore mit Linux Terminal generiert
Manish

1
Der einfachste Weg, um SHA-1 für den Release- und Debug-Modus zu erhalten. Überprüfen Sie dies
Naeem Ibrahim

Antworten:


174

Starten Sie einen Exportprozess, um eine Apk für Ihre App zu erstellen und Ihren Produktionsschlüssel zu verwenden. Auf der letzten Seite werden sowohl die Fingerabdrücke Ihres SHA1- als auch Ihres MD5-Zertifikats angezeigtGeben Sie hier die Bildbeschreibung ein


2
MD5 wird jetzt in logcat angezeigt (während der Erstellung nicht im Fenster).
Tool

4
Führen Sie den Exportvorgang zweimal durch. Es wird in der zweiten Runde gezeigt.
Keybee

Gibt es eine Möglichkeit, mit dieser Methode eine neue zu erstellen? Ich habe versucht, dies zu tun, aber meine alte Keystore-Datei ist vorhanden, aber ich denke, es ist die falsche (ich benötige ein Debug-Zertifikat, kein Release-Zertifikat), und ich habe das Passwort vergessen. > _ <Danke, wenn Sie einen Tipp haben.
Azurespot

HINWEIS: Sie müssen eine APK-Datei nicht vollständig exportieren. Sie können an dieser Stelle nach dem Kopieren des SHA1 abbrechen, um unnötige .apks zu vermeiden.
GraSim

139

Ich weiß, dass diese Frage beantwortet wurde, aber so habe ich meine Signatur für den Standard-Keystore gefunden. Gehen Sie in Eclipse zu Windows -> Einstellungen -> Android -> Erstellen

Geben Sie hier die Bildbeschreibung ein


5
Dies sollte die akzeptierte Antwort sein, da dies der einfachste Weg ist.
Mustafa

3
für den Standard- / Debug-Keystore, nicht für den Produktions-Keystore
Frederick Nyawaya

3
Leute, bitte beachtet, dass die sichere Antwort @frederick nyawaya's ist. Wenn Ihre App unterschiedliche Build- und Veröffentlichungs-Schlüsselspeicher hatte (was meistens der Fall ist, funktioniert die Karte NICHT auf Ihren Clients. Und Gott weiß, wann Sie dies wissen werden, da es auf Ihrem eigenen Computer einwandfrei funktioniert. Bitte seien Sie vorsichtig. Dies ist einfach, aber es ist wahrscheinlich, dass Sie auf Ihren Clientgeräten einen nicht funktionierenden Kartendienst haben.
Tina

92

Ich denke das wird perfekt funktionieren. Ich habe das gleiche benutzt:

Für Android Studio:

  1. Klicken Sie auf Erstellen > Signierte APK generieren .
  2. Sie erhalten ein Meldungsfeld. Klicken Sie einfach auf OK.
  3. Jetzt wird es ein weiteres Fenster geben, kopieren Sie einfach den Schlüsselspeicherpfad .
  4. Öffnen Sie nun eine Eingabeaufforderung und gehen Sie zu C: \ Programme \ Java \ jdk1.6.0_39 \ bin> (oder einer beliebigen installierten JDK-Version).
  5. Geben Sie keytool -list -v -keystore und fügen Sie Ihren Key Store - Pfad (zB C:. \ Programme \ Java \ jdk1.6.0_39 \ bin> keytool -list -v -keystore „E: \ My Projects \ Android \ android studio \ signierte apks \ Hello World \ HelloWorld.jks ").
  6. Jetzt wird das Key Store-Passwort abgefragt , Ihr Passwort angegeben und gedrückt Enter, um Ihre SHA1- und MD5-Zertifikatschlüssel zu erhalten.

Keystore-Datei über eine andere Maschine erstellt kann ich sh1 mit der gleichen Schlüsselspeicher-Datei mit oben beschriebenen Verfahren auf verschiedenen Maschinen erhalten
Mahendra Dabi

Vielen Dank
Hiren

74

Wenn Sie einen Mac oder sogar Linux verwenden, kopieren Sie diese einfach und fügen Sie sie in die Terminal- Anwendung ein. Sie erhalten sofort den SHA1-Schlüssel. Sie müssen nichts ändern.

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

Beispielausgabe:

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

@yuku Beispiel bitte. /home/desktop/././. , abc.jks, welches Passwort n all, brauchen wir all diese Details?
Prabs

Vielen Dank. Nur das ist der einfachste Weg.
Sayka

Du hast mir tatsächlich den Tag gerettet. Danke vielmals.
Karan Nagpal

keytool -list -v -keystore my-release-key.keystore
Schneebasen

Der JKS-Keystore verwendet ein proprietäres Format. Es wird empfohlen, auf PKCS12 zu migrieren, ein branchenübliches Format, bei dem "keytool -importkeystore -srckeystore <Pfad für vorhandenen Schlüsselspeicher verwenden> / <Variantenname> .keystore -destkeystore <Pfad für neuen Schlüsselspeicher> / <verwendet wird Variantenname> .keystore -deststoretype pkcs12 ".
Arpit J.

68

Verwenden Sie dies in der Befehlszeile

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

1
Dies war meiner Meinung nach die einfachste und zugleich Standardmethode, da immer mehr Menschen zu IntelliJ / Studio migrieren und keinen Zugriff auf Eclipse / ADT haben. Prost Kumpel !!
Himadri Pant

Warum fragt es mich Passwort
Abhijit Chakra

Ich habe, Zugang verweigert.!
Sudhakar Phad

59

Öffnen Sie das Terminal (unter Unix , unter MAC ), ( cmdunter Windows ) und cdzu diesem Pfad (Ihrem Java):

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

Führen Sie diesen Befehl aus:

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

Ändern debug.keystoreSie einfach den Pfad zu und Sie erhalten sowohl MD5- als auch SHA-1-Fingerabdrücke.


40
keytool -list -v -keystore "keyStoreName"

Führen Sie diesen Befehl in dem Verzeichnis aus, in dem sich der Schlüsselspeicher Ihrer App befindet.


Dies kann verwendet werden, um die SHA1 für Ihre Client-App abzurufen, die Sie exportieren und veröffentlichen möchten. Dies unterscheidet sich wahrscheinlich von dem in Eclipse, einem Debug-Keystore.
Dannyhan12

29

Führen Sie in Android Studio die folgenden Schritte aus:

  1. Klicken Sie rechts in Ihrer Android Studio-IDE auf das Menü Gradle-Eigenschaften.
  2. Erweitern Sie Aufgabenbaum.
  3. Klicken Sie auf signierenReport Sie können Ihren SHA1 an der unteren Konsole sehen

Geben Sie hier die Bildbeschreibung ein


13

Sehen Sie, ob Sie zu Google Mapdiesem Zeitpunkt einen MD5Fingerabdruck zum Generieren benötigenapi kay um Google Map in Ihrer Android-Anwendung verwenden zu können.

Der Befehl Keytool generiert MD5bei Verwendung JDK 1.6einen SHA1Fingerabdruck und bei Verwendung einen Fingerabdruck JDK 1.7.

Wenn Sie also Ihre Bewerbung für die Veröffentlichung signieren möchten, lesen Sie diese .

Und wenn Sie verwenden möchten, google-maplesen Sie dies .


Danke für die Wiederholung Akshay. Anscheinend musste ich -v zu meinem Befehl keytool hinzufügen, um die anderen Fingerabdrücke des Zertifikats anzuzeigen. Außerdem kann ich anscheinend ein Debug-Zertifikat verwenden, um eine Client-ID zu erstellen.
Alex

1
Meist. Ich habe mein Problem beim Erstellen einer Client-ID gelöst. Ich bin jedoch generell neu bei OAuth und nicht, wie Zertifikate und Fingerabdrücke funktionieren. Ich denke, ein Zertifikat kann sowohl einen MD5- als auch einen SHA1-Fingerabdruck haben. Zumindest bekomme ich das, wenn ich den keytool -list -v etcBefehl mache
Alex

12

Wenn Sie IntelliJ (12+?) Verwenden, gehen Sie zum Menü Signierte API erstellen / generieren

Rufen Sie nach dem Ausfüllen eines Popups die Daten im Feld "Schlüsselspeicherpfad" ab (z. B. C: \ Benutzer \ Benutzer \ Dokumente \ Speicher \ Speicher).

Und führen Sie eine Befehlszeile aus:

>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
...

Viel Glück


12

Wenn jemand das Android Studio benutzt ...

Klicken Sie auf: Erstellen> In APK signiert generieren. Erstellen Sie einen neuen Schlüssel. Dadurch werden ".jks" -Dateien generiert

Verwenden Sie den folgenden Befehl, um die Daten zu lesen (SHA1 und andere Informationen):

$ keytool -list -v -keystore filename.jks


Extra-Tipp : Befehl zum Generieren von Key Hash für Facebook$keytool -keystore filename.jks | openssl sha1 -binary | openssl base64
MuhFred

4

Für Benutzer von OpenSSL können Sie den SHA1-Fingerabdruck folgendermaßen abrufen:

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

Was zu folgender Ausgabe führen würde:

Geben Sie hier die Bildbeschreibung ein


4

Wenn Sie Android Studio verwenden. Sie müssen keinen SHA1-Fingerabdruck mithilfe der Eingabeaufforderung cmd generieren. Sie müssen nur ein Projekt mit der Standard-Kartenaktivität von Android Studio erstellen. Im Projekt können Sie den Fingerabdruck in google_maps_api.xml im Ordner Werte abrufen. Hoffe das wird dir helfen. :) :)

Geben Sie hier die Bildbeschreibung ein


4

Hier ist meine einfache Lösung dafür:

Klicke auf Gradle Schaltfläche, die Sie oben rechts finden. Sie sehen alle Gradle-Dateien. Gehen Sie jetzt zu Android und doppelklicken Sie auf signingReport. Sobald der Gradle-Build abgeschlossen ist, sehen Sie den SHA-Schlüssel. In den folgenden Bildern finden Sie eine schrittweise Anleitung.

Sobald Sie auf Gradle klicken, überprüfen Sie die folgenden Bilder. Hoffe das hilft jemandem.

SCHRITT 1:

Bild Schritt eins

SCHRITT 2:

Bild Schritt zwei


3

Wenn Sie Android Studio verwenden. Sie können den SHA1-Zertifikat- Fingerabdruck (Debuggen, Freigeben ... aller Build-Typen !!) schnell über Gradle-Aufgaben abrufen :

Unterzeichnungsbericht

SHA1 wird in Nachrichtenprotokollen angezeigt

Das Android-Plugin (in der Gradle-App konfiguriert) erstellt standardmäßig einen Debug-Modus.

com.android.application

Dateiroute zum Keystore:

HOME / .android / debug.keystore

Ich empfehle befestigen debug.keystore zu build.gradle. Legen Sie dazu eine Datei debug.keystore in einen App-Ordner und fügen Sie dann SigningConfigs in der Gradle-App hinzu:

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: Wenn Sie für die Veröffentlichung erstellen möchten, legen Sie eine Datei release.keystore in einem App-Ordner ab. (In diesem Beispiel wird derselbe debug.keystore verwendet.)


3

Versuchen Sie dies: Windows ---- Einstellungen ---- Android - Build --- sh1 Code Kopie von hier


3

Ich war beim ersten Mal so verwirrend, aber ich schlage Ihnen die endgültige Arbeitslösung für Windows vor:

1) Öffnen Sie cmd und wechseln Sie in Ihr Java / jdk / bin-Verzeichnis (drücken Sie einfach cd .., um einen Ordner zurück und cd NAME_FOLDEReinen Ordner vorwärts zu verschieben), in meinem Fall den letzten Ordner:C:\Program Files\Java\jdk1.8.0_73\bin> Geben Sie hier die Bildbeschreibung ein

2) Geben Sie nun diesen Befehl ein keytool -list -v -keystore C:\Users\YOUR_WINDOWS_USER\.android\debug.keystore -alias androiddebugkey -storepass android -keypass android

Als Ergebnis müssen Sie so etwas bekommen: Geben Sie hier die Bildbeschreibung ein


2

Ich denke das wird perfekt funktionieren. Ich habe das gleiche benutzt:

Für Android Studio:

Klicken Sie auf Erstellen> Signierte APK generieren. Sie erhalten ein Meldungsfeld. Klicken Sie einfach auf OK.

Jetzt wird es ein weiteres Fenster geben, kopieren Sie einfach den Schlüsselspeicherpfad.

Öffnen Sie nun eine Eingabeaufforderung und gehen Sie zu C: \ Programme \ Java \ jdk1.6.0_39 \ bin> (oder einer beliebigen installierten JDK-Version).

Geben Sie keytool -list -v -keystore ein und fügen Sie dann Ihren Schlüsselspeicherpfad ein (z. B. C: \ Programme \ Java \ jdk1.6.0_39 \ bin> keytool -list -v -keystore "E: \ Meine Projekte \ Android \ android studio \ signierte apks \ Hello World \ HelloWorld.jks ").

Jetzt wird das Key Store-Passwort abgefragt, Ihr Passwort angegeben und die Eingabetaste gedrückt, um Ihre SHA1- und MD5-Zertifikatschlüssel zu erhalten.

Fügen Sie nun diesen SHA1-Schlüssel zur Google-Entwicklerkonsole auf der Registerkarte "Anmeldeinformationen" hinzu und ändern Sie die Build-Varianten in Android Studio in den Release-Modus.


Ich kann das Passwort für den Schlüsselspeicher nicht eingeben, aber das Passwort wurde nicht in die Eingabeaufforderung eingegeben
Mahendra Dabi

Passwort ist nicht sichtbar, geben Sie einfach Ihr Passwort richtig ein und drücken Sie die Eingabetaste. Sie erhalten Ihre Schlüssel
Rishab Jain

danke ich habe falsches Passwort eingegeben jetzt ist es Arbeit danke Jungs
Mahendra Dabi

1

Für diejenigen auf dem Mac, die nach Keytool suchen. folge diesen Schritten:

Stellen Sie zunächst sicher, dass Sie Java JDK http://docs.oracle.com/javase/7/docs/webnotes/install/mac/mac-jdk.html installieren

Geben Sie dies dann in die Eingabeaufforderung ein:

/usr/libexec/java_home -v 1.7

es wird so etwas ausspucken wie:

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

Das Keytool befindet sich im selben Verzeichnis wie javac. dh:

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

Aus dem bin-Verzeichnis können Sie das Keytool verwenden.


1

Wenn Sie unter Mac / Linux arbeiten, können Sie den SHA1-Fingerabdruck erhalten, indem Sie die folgende Zeile in das Terminal schreiben:

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

Danach sind zwei Dinge möglich

  1. Sie werden nach dem Passwort gefragt

    Schreib einfach

Android

und drücken Sie die Eingabetaste. Sie finden die SHA1-Taste in der unten gezeigten Ausgabe.

  1. Sie werden aufgefordert, ein geeignetes Programm herunterzuladen (und eine Liste wird angegeben).

    Geben Sie einfach im Terminal Folgendes ein

sudo apt installiere openjdk-8-jre-headless

und führen Sie dann im Terminal erneut Folgendes aus: keytool -list -v -keystore ~/.android/debug.keystore -alias androiddebugkey -storepass android -keypass android

Dieses Mal werden Sie zu Schritt 1 geführt, in dem Sie nur das Passwort als eingeben müssen

Android

und Sie erhalten Ihren SHA1-Fingerabdruck unten in der Ausgabe.


0

Mit Portecle :

  • Datei> Keystore-Datei öffnen
  • Geben Sie das Keystore-Passwort ein
  • Klicken Sie mit der rechten Maustaste auf Aliasnamen> Zertifikatdetails> SHA-1-Fingerabdruck


0

Ich wollte eine Benachrichtigung an diejenigen senden, die das gleiche Problem wie ich haben. Ich habe die Schritte durchlaufen, um mein Debug-SHA-1 und mein Release-SHA-1 zu generieren. Ich habe versucht, die Google-Anmelde-API mit meiner App zu verbinden.

Ich bin auf das Problem gestoßen, dass das Debug .apk einwandfrei funktionieren würde, eine Verbindung herstellen und sich mit Google Sign-In authentifizieren würde. Meine Version .apk würde auch funktionieren, wenn sie manuell auf dem Telefon installiert wird. Wenn ich meine .apk-Version im Google Play Store veröffentlichte, wurde meine Google-Anmeldung nicht authentifiziert und ich bekam ein Problem!

Die längste Zeit konnte ich es nicht herausfinden, aber ich stellte fest, dass meine App von Google signiert wurde, dh die Meldung oben auf der Entwicklerkonsole zeigte Folgendes: Google Play App Signing ist für diese App aktiviert.

Ich ging zu meiner Registerkarte "Release Management", scrollte nach unten zu "App Signing" und fand dort den SHA-1. Nachdem ich dies meinem Code und der "Firebase-Konsole" hinzugefügt hatte, die ich als Backend für die Google-Anmeldung verwendete, schien alles zu funktionieren. Es sieht so aus, als würde mein Release-Keystore durch das von Google signierte Zertifikat ersetzt. Ich bin mir nicht sicher, ob dies der Fall war, aber es hat mein Problem behoben und es meiner Google Play Store-Release-Apk ermöglicht, sich korrekt mit dem Google-Zeichen zu authentifizieren im!


0

Schritt-für-Schritt Lösung:

  1. Öffnen Sie Ihre Eingabeaufforderung oder Ihr Terminal für Mac
  2. Wechseln Sie in das Verzeichnis des Speicherorts der Keytool-Datei. Wechseln Sie das Verzeichnis mit dem Befehl cd <directory path>. (Hinweis: Wenn ein Verzeichnisname Leerzeichen enthält, fügen Sie \zwischen den beiden Wörtern ein. Beispiel cd /Applications/Android\ Studio.app//Contents/jre/jdk/Contents/Home/bin/)

    • Um den Speicherort Ihres Keytools zu finden, gehen Sie zu Android Studio. Öffnen Sie Ihr Projekt. Und geh zu

    • Datei> Projektstruktur> SDK-Speicherort..und JDK-Speicherort suchen.

  3. Führen Sie das Keytool mit dem folgenden Befehl aus: keytool -list -v –keystore <your jks file path>(Hinweis: Wenn ein Verzeichnisname Leerzeichen enthält, fügen Sie zwischen den beiden Wörtern \ hinzu. Beispiel keytool -list -v -keystore /Users/username/Desktop/tasmiah\ mobile/v3/jordanos.jks)

  4. Die Eingabeaufforderung fordert Sie auf, das Passwort einzugeben. Geben Sie also Ihr Passwort ein. Dann erhalten Sie das Ergebnis


0

Hier ist ein Tool für faule Programmierer:

1 Abhängigkeit hinzufügen:

compile 'com.vk:androidsdk:1.6.9'

2 Fügen Sie irgendwo in Ihrer Aktivität / Anwendung die folgenden Zeilen hinzu:

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

3 Öffnen Sie logcat und fangen Sie die Nachricht ab.

4 Gewinn!


0
  1. Öffnen Sie Ihre Eingabeaufforderung
  2. Navigieren Sie im Arbeitsverzeichnis zu 1.8.0 / bin
  3. Einfügen keytool -list -v -alias androiddebugkey -keystore %USERPROFILE%\.android\debug.keystore
  4. Drücken Sie die Eingabetaste, wenn Sie nach einem Passwort gefragt werden

0

Wenn Sie den Fingerabdruck-sha1-Schlüssel vom Signieren der Datei keystore.jks erhalten möchten, führen Sie den folgenden Befehl vom Terminal aus:

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

Beispiel

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

Bitte klicken Sie auf Gradle auf der rechten Seite des Menüs. Klicken Sie dann auf: App. Klicken Sie dann auf Android-Ordner. Dann ist dort der Name der SigningReport-Datei vorhanden. Doppelklicken Sie darauf. Es wird ausgeführt und in einer Weile wird Ihnen der SHA-1-Code angezeigt. Kopieren Sie einfach den Code. Und fügen Sie es dort ein, wo Sie es brauchen

Signierbericht im Bild hervorgehoben

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.