Jak uzyskać odcisk cyfrowy certyfikatu podpisywania (SHA1) dla OAuth 2.0 na Androida?


154

Próbuję zarejestrować moją aplikację na Androida, postępując zgodnie z instrukcjami w https://developers.google.com/console/help/#installed_applications, które prowadzą mnie do śledzenia http://developer.android.com/tools/publishing/app- signing.html .

Jednak nie jestem pewien, jak uzyskać odcisk cyfrowy certyfikatu podpisywania (SHA1).

Najpierw użyłem wtyczki Eclipse ADT do wyeksportowania i utworzenia magazynu kluczy / klucza. Potem spróbowałem keytool -list keystore mykeystore.keystorei otrzymałem odcisk palca certyfikatu MD5. Czy muszę powtórzyć podpisywanie (co oznacza, że ​​nie mogę użyć kreatora eksportu eclipse)?

Czy mogę najpierw użyć certyfikatu debugowania?


Przed wyeksportowaniem / przesłaniem aplikacji użyj odpowiedzi użytkownika2453771. Po wyeksportowaniu / przesłaniu użyj odpowiedzi Fredericka Nyawaya. Pamiętaj o tym i oszczędzaj sobie kilku godzin bólu.
SmulianJulian

jak wygenerować magazyn kluczy wydania apk za pomocą terminala linux
Manish

1
Najłatwiejszy sposób na uzyskanie SHA-1 w trybie wydania i debugowania Android Studio Gradle. Sprawdź to
Naeem Ibrahim

Odpowiedzi:


174

Rozpocznij proces eksportu, aby utworzyć plik APK dla swojej aplikacji i użyć klucza produkcyjnego. Ostatnia strona zawiera odciski cyfrowe certyfikatów SHA1 i MD5wprowadź opis obrazu tutaj


2
MD5 pojawia się teraz w logcat (nie w oknie podczas tworzenia).
Narzędzie

4
Wykonaj proces eksportu dwukrotnie. Zostanie to pokazane w drugiej turze.
keybee

Czy istnieje sposób na utworzenie nowego za pomocą tej metody? Próbowałem to zrobić, ale mój stary plik kluczy jest tam, ale myślę, że jest zły (potrzebuję certyfikatu debugowania, a nie wydania), a ponadto zapomniałem hasła. > _ <Dzięki, jeśli masz wskazówkę.
Azurespot

UWAGA: Nie musisz w pełni eksportować pliku .apk. Możesz anulować w tym momencie po skopiowaniu SHA1, aby uniknąć tworzenia niepotrzebnych .apków.
GraSim

139

Wiem, że odpowiedziano na to pytanie, ale w ten sposób znalazłem swój podpis dla domyślnego magazynu kluczy. W Eclipse, jeśli przejdziesz do Windows -> Preferencje -> Android -> Build

wprowadź opis obrazu tutaj


5
To powinna być akceptowana odpowiedź, ponieważ jest to najłatwiejsza droga.
Mustafa,

3
dla domyślnego / debugowego magazynu kluczy, a nie produkcyjnego magazynu kluczy
Frederick Nyawaya

3
Chłopaki, zauważcie, że bezpieczną odpowiedzią jest @frederick nyawaya's. Jeśli Twoja aplikacja ma różne wersje i publikuje magazyny kluczy (co jest w większości przypadków, mapa NIE będzie działać na Twoich klientach. I Bóg wie, kiedy się o tym dowiesz, ponieważ działa dobrze na Twoim komputerze. Zachowaj ostrożność). Jest to łatwe, ale prawdopodobnie skończy się na niedziałającej usłudze map na urządzeniach klienckich.
Tina

92

Myślę, że to zadziała idealnie. Użyłem tego samego:

W przypadku Android Studio:

  1. Kliknij Build > Generate Signed APK .
  2. Otrzymasz komunikat, po prostu kliknij OK.
  3. Teraz pojawi się kolejne okno, po prostu skopiuj ścieżkę magazynu kluczy .
  4. Teraz otwórz wiersz poleceń i przejdź do C: \ Program Files \ Java \ jdk1.6.0_39 \ bin> (lub dowolnej zainstalowanej wersji jdk).
  5. Wpisz keytool -list -v -keystore, a następnie wklej ścieżkę do magazynu kluczy (np. C: \ Program Files \ Java \ jdk1.6.0_39 \ bin> keytool -list -v -keystore "E: \ My Projects \ Android \ android studio \ podpisane apks \ Hello World \ HelloWorld.jks ").
  6. Teraz zapyta o hasło magazynu kluczy, poda twoje i naciśnij, Enteraby uzyskać klucze certyfikatu SHA1 i MD5.

plik magazynu kluczy utworzony na innej maszynie, czy mogę uzyskać sh1 z tym samym plikiem kluczy z powyższą procedurą na innym komputerze
Mahendra Dabi

Dziękuję bardzo
Hiren

74

Jeśli używasz Maca, a nawet Linuksa, po prostu skopiuj i wklej to do aplikacji Terminal , a natychmiast otrzymasz klucz SHA1. Nie musisz niczego zmieniać.

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

Przykładowe dane wyjściowe:

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

Przykład @yuku proszę. /home/desktop/././. , abc.jks, które hasło n all, czy potrzebujemy tych wszystkich szczegółów?
Prabs

Dzięki. Tylko tak jest najłatwiej.
Sayka,

Naprawdę uratowałeś mi dzień. Dzięki za tonę.
Karan Nagpal

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

Magazyn kluczy JKS używa zastrzeżonego formatu. Zaleca się migrację do formatu PKCS12, który jest standardowym formatem branżowym przy użyciu „keytool -importkeystore -srckeystore <użyj-istniejącej-ścieżka-magazynu kluczy> / <variant-name> .keystore -destkeystore <new-key-store path> / < nazwa-wariantu> .keystore -deststoretype pkcs12 ".
Arpit J.

68

użyj tego w linii poleceń

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

1
Wydawało mi się, że to najprostszy, a jednocześnie standardowy sposób, ponieważ coraz więcej osób migruje do IntelliJ / Studio i nie ma dostępu do łatwości Eclipse / ADT. Zdrowie przyjacielu!!
Himadri Pant

Dlaczego pyta mnie o hasło
Abhijit Chakra

dostałem, odmowa dostępu.!
sudhakar phad

59

Otwórz terminal (w Unix , w MAC ), ( cmdw Windows ) i cddo tej (twojej java) ścieżki:

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

Uruchom to polecenie:

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

Po prostu zmień ścieżkę na, debug.keystorea otrzymasz odciski palców MD5 i SHA-1.


40
keytool -list -v -keystore "keyStoreName"

Uruchom to polecenie z katalogu, w którym znajduje się magazyn kluczy aplikacji.


Można go użyć do uzyskania SHA1 dla aplikacji klienckiej, którą wyeksportujesz i opublikujesz. Prawdopodobnie różni się od tego, który widzisz w eclipse, który jest magazynem kluczy debugowania.
dannyhan12

29

W Android Studio wykonaj następujące kroki:

  1. Kliknij menu właściwości Gradle po prawej stronie IDE studia Android.
  2. Rozwiń drzewo zadań.
  3. Kliknij na podpisanie Raport Możesz zobaczyć swój SHA1 w dolnej konsoli

wprowadź opis obrazu tutaj


13

Sprawdź, czy chcesz użyć Google Mapw tym momencie MD5odcisku palca do generowania api kaydo korzystania z mapy google w aplikacji na Androida.

Polecenie Keytool generuje MD5odcisk palca, jeśli używasz, JDK 1.6i generuje SHA1odcisk palca, jeśli używasz JDK 1.7.

Więc chodzi o to, że jeśli chcesz podpisać swoją aplikację do publikacji, przeczytaj to .

A jeśli chcesz skorzystać, google-mapprzeczytaj to .


Dzięki za powtórkę Akshay. Najwyraźniej musiałem dodać -v do mojego polecenia keytool, aby wyświetlić inne odciski cyfrowe certyfikatów. Najwyraźniej mogę również użyć certyfikatu debugowania, aby utworzyć identyfikator klienta.
Alex

1
Przeważnie. Rozwiązałem problem z tworzeniem identyfikatora klienta. Jednak nie znam ogólnie protokołu OAuth, a nie sposobu działania certyfikatów i odcisków palców. Wydaje mi się, że certyfikat może mieć odcisk cyfrowy MD5 i SHA1? Przynajmniej to dostaję, kiedy wykonuję keytool -list -v etcpolecenie
Alex

12

Jeśli używasz IntelliJ (12+?), Przejdź do menu Build / Generate signed Api

Po wypełnieniu wyskakującego okienka pobierz dane w polu „ścieżka do magazynu kluczy” (np. C: \ Users \ user \ Documents \ store \ store)

I uruchom w wierszu poleceń:

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

Powodzenia


12

Jeśli ktoś korzysta ze studia Android ...

kliknij: Buduj> Generuj plik APK z podpisem Utwórz nowy klucz: spowoduje to wygenerowanie plików „.jks”

Użyj następującego polecenia, aby odczytać dane (SHA1 i inne informacje):

$ keytool -list -v -keystore nazwa_pliku.jks


dodatkowa wskazówka : polecenie wygenerowania skrótu klucza dla facebooka$keytool -keystore filename.jks | openssl sha1 -binary | openssl base64
MuhFred

4

Dla tych, którzy używają OpenSSL, możesz pobrać odcisk palca SHA1 w ten sposób:

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

Co dałoby następujący wynik:

wprowadź opis obrazu tutaj


4

Jeśli używasz Android Studio. Nie musisz generować odcisku palca SHA1 za pomocą polecenia cmd. Wystarczy, że stworzysz projekt z domyślną aktywnością map w Android Studio. W projekcie możesz pobrać odcisk palca w google_maps_api.xml w folderze Values. Mam nadzieję, że to ci pomoże. :)

wprowadź opis obrazu tutaj


4

Oto moje proste rozwiązanie:

Kliknij Gradleprzycisk, który znajdziesz po prawej stronie u góry. zobaczysz wszystkie pliki gradle. Teraz przejdź do Androida i kliknij dwukrotnie raport podpisywania. Po zakończeniu budowania gradle zobaczysz klucz SHA. Sprawdź poniższe obrazy, aby zapoznać się z przewodnikiem krok po kroku.

Po kliknięciu Gradle sprawdź poniższe obrazy. Mam nadzieję, że to komuś pomoże.

KROK 1:

Obraz Krok pierwszy

KROK 2:

Obraz Krok drugi


3

Jeśli używasz Android Studio. Możesz szybko uzyskać odcisk cyfrowy certyfikatu SHA1 (debugować, zwolnić ... wszystkie typy kompilacji !!) za pomocą zadań Gradle :

podpisywanieReport

SHA1 jest wyświetlany w dziennikach komunikatów

Wtyczka Android (skonfigurowana w aplikacji Gradle) tworzy domyślny tryb debugowania.

com.android.application

Trasa pliku do magazynu kluczy:

HOME / .android / debug.keystore

Zalecam dołączenie debug.keystore do build.gradle. Aby to zrobić, umieść plik debug.keystore w folderze aplikacji, a następnie dodaj SigningConfigs w aplikacji 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"
            }
        }    
        ........
    }

Dodatkowo: jeśli chcesz tworzyć do wydania, umieść plik release.keystore w folderze aplikacji. (W tym przykładzie zastosowano ten sam plik debug.keystore)


3

Spróbuj tego: Windows ---- preferencje ---- Android - kompilacja --- kopia kodu sh1 stąd


3

Za pierwszym razem byłem tak zagmatwany, ale proponuję Ci ostateczne działające rozwiązanie dla systemu Windows:

1) Otwórz cmd i przejdź do katalogu Java / jdk / bin (po prostu naciśnij, cd ..aby przejść o jeden folder wstecz i cd NAME_FOLDERjeden folder do przodu), w moim przypadku folder końcowy:C:\Program Files\Java\jdk1.8.0_73\bin> wprowadź opis obrazu tutaj

2) Teraz wpisz to polecenie keytool -list -v -keystore C:\Users\YOUR_WINDOWS_USER\.android\debug.keystore -alias androiddebugkey -storepass android -keypass android

W rezultacie musisz dostać coś takiego: wprowadź opis obrazu tutaj


2

Myślę, że to zadziała idealnie. Użyłem tego samego:

W przypadku Android Studio:

Kliknij Build> Generate Signed APK. Otrzymasz komunikat, po prostu kliknij OK.

Teraz pojawi się kolejne okno, po prostu skopiuj ścieżkę magazynu kluczy.

Teraz otwórz wiersz poleceń i przejdź do C: \ Program Files \ Java \ jdk1.6.0_39 \ bin> (lub dowolnej zainstalowanej wersji jdk).

Wpisz keytool -list -v -keystore, a następnie wklej ścieżkę do magazynu kluczy (np. C: \ Program Files \ Java \ jdk1.6.0_39 \ bin> keytool -list -v -keystore "E: \ My Projects \ Android \ android studio \ podpisane apks \ Hello World \ HelloWorld.jks ").

Teraz zapyta o hasło magazynu kluczy, poda twoje i naciśnij Enter, aby uzyskać klucze certyfikatu SHA1 i MD5.

Teraz dodaj ten klucz SHA1 do konsoli programistów Google na karcie poświadczeń, a także zmień warianty kompilacji w Android Studio na tryb wydania.


nie mogę wprowadzić hasła magazynu kluczy, które wpisuję, ale hasło nie zostało wpisane w wierszu polecenia
Mahendra Dabi

hasło nie jest widoczne, wystarczy wpisać poprawne hasło i nacisnąć Enter, a otrzymasz klucze
Rishab Jain

dziękuję, wprowadziłem złe hasło, teraz to działa, dziękuję
Mahendra Dabi

1

Dla tych na Macu, którzy szukają keytool wykonaj następujące kroki:

Najpierw upewnij się, że zainstalowałeś Java JDK http://docs.oracle.com/javase/7/docs/webnotes/install/mac/mac-jdk.html

Następnie wpisz to w wierszu polecenia:

/usr/libexec/java_home -v 1.7

wypluje coś takiego:

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

keytool znajduje się w tym samym katalogu co javac. to znaczy:

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

Z katalogu bin możesz skorzystać z narzędzia keytool.


1

Jeśli korzystasz z systemu Mac / Linux, możesz uzyskać odcisk palca SHA1, pisząc następujący wiersz w terminalu:

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

Po tym są możliwe 2 rzeczy

  1. Poprosi Cię o hasło

    Po prostu wpisz

android

i naciśnij enter, możesz znaleźć klucz SHA1 w danych wyjściowych pokazanych poniżej.

  1. Poprosi Cię o pobranie odpowiedniego programu (i zostanie podana lista)

    Po prostu wpisz następujący w terminalu

sudo apt zainstaluj openjdk-8-jre-headless

a następnie ponownie uruchom następujące w terminalu: keytool -list -v -keystore ~/.android/debug.keystore -alias androiddebugkey -storepass android -keypass android

Tym razem zostaniesz przeniesiony do kroku 1, w którym musisz po prostu wpisać hasło jako

android

a poniżej w danych wyjściowych otrzymasz odcisk palca SHA1.


0

Korzystanie z Portecle :

  • Plik> Otwórz plik kluczy
  • Wprowadź hasło magazynu kluczy
  • Kliknij prawym przyciskiem myszy nazwę aliasu> Szczegóły certyfikatu> Odcisk cyfrowy SHA-1


0

Chciałem wysłać powiadomienie do tych, którzy mają ten sam problem co ja. Wykonałem kroki, aby wygenerować mój debugujący SHA-1 i moją wersję SHA-1. Próbowałem połączyć interfejs API logowania Google z moją aplikacją.

Napotkałem problem polegający na tym, że debugowanie .apk działałoby dobrze, łączyło się i uwierzytelniało za pomocą logowania Google. Moja wersja .apk również działałaby po ręcznej instalacji w telefonie. Kiedy opublikowałem moją wersję .apk w sklepie Google Play, moje logowanie google nie mogło zostać uwierzytelnione i pojawił się problem!

Najdłużej nie mogłem tego rozgryźć, ale stwierdziłem, że moja aplikacja jest podpisywana przez Google, tj. Wyświetlał się komunikat na górze konsoli programisty: Podpisywanie aplikacji Google Play jest włączone dla tej aplikacji.

Poszedłem do zakładki Release Management, przewinąłem w dół do App Signing i znalazłem tam SHA-1. Po dodaniu tego do mojego kodu i na „konsoli Firebase”, której używałem jako zaplecza logowania Google, wszystko wydawało się działać. Wygląda na to, że mój magazyn kluczy wydania został zastąpiony certyfikatem podpisanym przez Google ... Nie jestem pewien, czy tak się dzieje, ale rozwiązało to mój problem i umożliwiło poprawne uwierzytelnienie za pomocą znaku Google Play Store. w!


0

Rozwiązanie krok po kroku:

  1. Otwórz wiersz polecenia lub Terminal dla komputerów Mac
  2. Zmień katalog na katalog, w którym znajduje się plik keytool. Zmień katalog za pomocą polecenia cd <directory path>. (Uwaga: jeśli w dowolnej nazwie katalogu jest spacja, dodaj \między dwoma słowami. Przykład cd /Applications/Android\ Studio.app//Contents/jre/jdk/Contents/Home/bin/)

    • Aby znaleźć lokalizację swojego narzędzia do kluczy, przejdź do Android Studio i otwórz swój projekt. I idź do

    • Plik> Struktura projektu> Lokalizacja SDK i znajdź lokalizację JDK.

  3. Uruchom narzędzie keytool za pomocą tego polecenia: keytool -list -v –keystore <your jks file path>(Uwaga: jeśli w dowolnej nazwie katalogu jest spacja, dodaj \ między dwoma słowami. Przykład keytool -list -v -keystore /Users/username/Desktop/tasmiah\ mobile/v3/jordanos.jks)

  4. Polecenie zachęca do wpisania hasła ... więc wprowadź swoje hasło ... a otrzymasz wynik


0

Oto narzędzie dla leniwych programistów:

1 dodaj zależność:

compile 'com.vk:androidsdk:1.6.9'

2 dodaj następujące wiersze gdzieś w swoim działaniu / aplikacji:

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

3 Otwórz logcat i przechwyć wiadomość.

4 Zysk!


0
  1. Otwórz wiersz polecenia
  2. Przejdź do katalogu roboczego do 1.8.0 / bin
  3. pasta keytool -list -v -alias androiddebugkey -keystore %USERPROFILE%\.android\debug.keystore
  4. Naciśnij Enter, jeśli poprosi Cię o hasło

0

Jeśli chcesz uzyskać klucz fingerprint-sha1 podczas podpisywania pliku keystore.jks Uruchom następujące polecenie z terminala:

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

Przykład

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

Kliknij Gradle z prawej strony menu Następnie kliknij: aplikacja Następnie kliknij folder android Następnie istnieje nazwa pliku raportu podpisu Kliknij dwukrotnie na to. Zacznie się wykonywać i za chwilę pokaże Ci kod SHA-1 Po prostu skopiuj kod. I wklej go tam, gdzie potrzebujesz

Raport podpisywania wyróżniony na obrazie

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.