Openssl nie jest rozpoznawane jako polecenie wewnętrzne ani zewnętrzne


177

Chcę wygenerować podpis aplikacji dla mojej aplikacji, który zostanie później zintegrowany z Facebookiem. W jednym z samouczków Facebooka znalazłem to polecenie:

keytool -exportcert -alias androiddebugkey -keystore ~/.android/debug.keystore | openssl sha1 -binary | openssl base64

W samouczku jest napisane, że uruchamiając to polecenie cmd, rozpocznie się mój proces generowania podpisu.

Jednak to polecenie powoduje błąd:

openssl is not recognized as an internal or external command

Jak mogę się tego pozbyć?


10
Pobierz i zainstaluj OpenSSL .
Michael Petrotta,

Ściągnąłem 3 z nich nikt nie jest kompatybilny: /
Khurram

1
Co to znaczy, khurram?
Michael Petrotta,

1
Ściągnąłem wiele wersji openssl z linku, który podałem, ale każda z nich wyświetla błąd przed instalacją, że nie jest kompatybilny z Windows 7- 64 bit. Czy możesz mi powiedzieć dokładny plik openssl, którego potrzebuję
Khurram,

1
możesz go pobrać z linku, który zamieściłem w moich odpowiedziach poniżej ...
Usama Sarwar

Odpowiedzi:


395

Cóż, w miejscu openssl ... musisz podać ścieżkę do pobranego folderu openssl. Twoje aktualne polecenie powinno wyglądać następująco:

keytool -exportcert -alias androiddebugkey -keystore ~/.android/debug.keystore | "C:\Users\abc\openssl\bin\openssl.exe" sha1 -binary | "C:\Users\abc\openssl\bin\openssl.exe" base64

Pamiętaj, że ścieżka, którą wejdziesz, będzie ścieżką, na której zainstalowałeś openssl ... mam nadzieję, że to pomoże .. :-)

Edytować:

możesz pobrać openssl dla Windows 32 i 64 bit z odpowiednich linków poniżej:

OpenSSL dla 64 bitów

OpenSSL dla 32 bitów


1
jest napisane, że c: \ openssl \ bin \ openssl nie jest rozpoznawane
Akhil Jain

7
lepszym sposobem byłoby wykonanie oryginalnej komendy z katalogu openssl / bin. To znaczy, jeśli mój katalog openssl znajduje się w C: dev, przeniósłbym się do C: \ dev \ openssl \ bin i wykonał polecenie tak, jak jest
AnhSirk Dasarp

2
powinieneś zwrócić uwagę na plik openssl.exe: exportcert -alias androiddebugkey -keystore ~ ​​/ .android /debug.keystore | „C: \ openssl \ bin \ openssl.exe” sha1 -binary | „C: \ openssl \ bin \ op enssl.exe” base64
phanhongphucit

@LatentBoy yess masz rację. Twój sposób pracował dla mnie. Wielkie dzięki.
surhidamatya

dzięki ... po około godzinie, twoja odpowiedź zadziałała dla mnie
Krupal Shah

23

Użyj całej ścieżki, w ten sposób:

exportcert -alias androiddebugkey -keystore ~/.android
/debug.keystore | "C:\openssl\bin\openssl.exe" sha1 -binary | "C:\openssl\bin\op
enssl.exe" base64

U mnie to zadziałało.


18

Wykonaj następujące kroki, mam nadzieję, że Twój klucz działa poprawnie:

  1. Krok 1 Będziesz potrzebował OpenSSL. Możesz pobrać plik binarny z projektu openssl-for-windows w Google Code.

  2. Krok 2 Rozpakuj folder, a następnie skopiuj ścieżkę do plikubin folderu do schowka.

    Na przykład, jeśli plik jest rozpakowany do lokalizacji C:\Users\gaurav\openssl-0.9.8k_WIN32, skopiuj ścieżkę C:\Users\gaurav\openssl-0.9.8k_WIN32\bin.

  3. Krok 3 Dodaj ścieżkę do ścieżki środowiska systemowego. Po ustawieniu PATHzmiennej środowiskowej otwórz cmd i wpisz następujące polecenie:

    C:\>keytool -exportcert -alias androiddebugkey -keystore [path to debug.keystore] | openssl sha1 -binary | openssl base64

    Po wyświetleniu monitu wpisz hasło. Jeśli polecenie działa, zostanie wyświetlony klucz.


FYI: Zazwyczaj hasło debug.keystore to po prostu „android”.
Someone Somewhere

11

To działa dla mnie pomyślnie.

"C: \ Program Files \ Java \ jdk1.6.0_26 \ bin \ keytool.exe" -exportcert -alias sociallisting -keystore "D: \ keystore \ SocialListing" | „C: \ cygwin \ bin \ openssl.exe” sha1 -binary | „C: \ cygwin \ bin \ openssl.exe” base64

Uważaj na poniższą ścieżkę:

  • „C: \ Program Files \ Java \ jdk1.6.0_26 \ bin \ keytool.exe”
  • „D: \ keystore \ SocialListing” lub „ C: \ Users \ Shaon.android \ debug.keystore
  • „C: \ cygwin \ bin \ openssl.exe” lub może wyglądać tak : C: \ Users \ openssl \ bin \ openssl.exe

Jeśli polecenie zadziała pomyślnie, zobaczysz to polecenie:

Wprowadź hasło magazynu kluczy: wpiszeyourpassword

Zaszyfrowany klucz skrótu **


10

to późna odpowiedź, ale pomoże leniwym ludziom takim jak ja .. dodaj ten kod do swojej klasy Application, nie ma potrzeby pobierania openssl i nie ma potrzeby ustawiania ścieżki .. wystarczy tylko skopiować ten kod .. a keyHash wygenerowane w logu.

import com.facebook.FacebookSdk;
public class MyApplication extends Application {

    @Override
    public void onCreate() {
        super.onCreate();
        FacebookSdk.sdkInitialize(getApplicationContext());
        AppEventsLogger.activateApp(this);
        printKeyHash();
    }

    private void printKeyHash() {
        try {
            PackageInfo info = getPackageManager().getPackageInfo(
                    getPackageName(), PackageManager.GET_SIGNATURES);
            for (Signature signature : info.signatures) {
                MessageDigest md = MessageDigest.getInstance("SHA");
                md.update(signature.toByteArray());
                Log.i("KeyHash:",
                        Base64.encodeToString(md.digest(), Base64.DEFAULT));
            }
        } catch (PackageManager.NameNotFoundException e) {
            Log.e("jk", "Exception(NameNotFoundException) : " + e);
        } catch (NoSuchAlgorithmException e) {
            Log.e("mkm", "Exception(NoSuchAlgorithmException) : " + e);
        }
    }
}

i nie zapomnij dodać klasy MyApplication w manifeście:

<application
        android:name=".MyApplication"
</application>

czy to działa z wydaniem wersji Facebooka? jeśli nie jak?
MetaSnarf

Ten kod jest używany do generowania klucza. I ten sam klucz do uwolnienia. W przypadku wersji wydania upewnij się, że ustawiłeś dostęp publiczny w konsoli programisty Facebooka.
Sagar Chavada

Pojawia się błąd „Zarówno kontekst, jak i identyfikator aplikacji muszą mieć wartość różną od null”, gdy jest używany powyżej kodu. @SagarChavada
Yesha Shah

6

Najpierw przejdź do folderu Java / jre / bin w cmd cd c: \ Program Files (x86) \ Java \ jre7 \ bin

Następnie użyj: [zmień ścieżkę debug.keystore do właściwej lokalizacji w twoim systemie] zainstaluj openssl (dla Windows 32 lub 64 zgodnie z Twoimi potrzebami w c: \ openssl)

keytool -exportcert -alias androiddebugkey -keystore "C:\Users\vibhor\.android\debug.keystore" | "c:\openssl\bin\openssl.exe" sha1 -binary | "c:\openssl\bin\openssl.exe" base64

Więc całe polecenie wygląda tak: [monituje o wprowadzenie hasła do magazynu kluczy podczas wykonywania]

c:\Program Files (x86)\Java\jre7\bin>keytool -exportcert -alias androiddebugkey
-keystore "C:\Users\vibhor\.android\debug.keystore" | "c:\openssl\bin\openssl.ex
e" sha1 -binary | "c:\openssl\bin\openssl.exe" base64
Enter keystore password:

5
Steps to create Hash Key. 
1: Download openssl from Openssl for Windows . I downloaded the Win64 version 
2:Unzip and copy all the files in the bin folder including openssl.exe(All file of bin folder) 
3:Goto to the folder where you installed JDK for me its C:\Program Files\Java\jdk1.8.0_05\bin 
4:Paste all the files you copied from Openssls bin folder to the Jdk folder. 

następnie przejdź do C: \ Program Files \ Java \ jdk1.8.0_05 \ bin i naciśnij klawisz Shift, kliknij prawym przyciskiem myszy i otwórz cmd

C:\Program Files\Java\jdk1.8.0_05\bin>//cmd path 

to jest dla Sha1 poza tym narzędziem
kluczy -exportcert -alias androiddebugkey -keystore "C: \ User \ ABC \ .android.keystore" | openssl sha1 -binary | openssl base64
// a ABC to nazwa systemu wstaw własną nazwę systemu


Do jakiego binfolderu odwołujesz się w drugim kroku?
Ionut Necula

2

Użyłem tego kodu:

To działa dla mnie pomyślnie.

"C:\Program Files\Java\jdk1.6.0_26\bin\keytool.exe" -exportcert -alias sociallisting -
keystore "D:\keystore\SocialListing" | "C:\cygwin\bin\openssl.exe" sha1 -binary | 
"C:\cygwin\bin\openssl.exe" base64

2

użyj tego zadziałało dla mnie. proszę zmień swoją ścieżkę

C: \ Program Files \ Java \ jre7 \ bin keytool -exportcert -alias androiddebugkey -keystore "C: \ Users \ Ace.android \ debug.keystore" | „C: \ openssl \ bin

\ openssl.exe "sha1 -binary |" C: \ openssl \ bin \ openssl.exe "base64


należy pobrać openssl stąd code.google.com/p/openssl-for-windows/downloads/... i skopiować folder bin i wkleić do C: \ openssl \
Azahar

1

Pobieranie i rozpakowywanie

Możesz pobrać openssl dla Windows 32 i 64 bit z odpowiednich linków poniżej:

https://code.google.com/archive/p/openssl-for-windows/downloads

OpenSSL dla 64-bitów OpenSSL dla 32-bitów

keytool -exportcert -alias androiddebugkey -keystore %HOMEPATH%\.android\debug.keystore | **"C:\Users\keshav.gera\openssl-0.9.8k_X64\bin**\openssl.exe" sha1 -binary | **"C:\Users\keshav.gera\openssl-0.9.8k_X64\bin**\openssl.exe" base64

Ważny zmień naszą ścieżkę tutaj, a także zainstaluj open ssl w swoim systemie

Działa bez wątpienia

C:\Users\keshav.gera>keytool -exportcert -alias androiddebugkey -keystore %HOMEPATH%\.android\debug.keystore | "C:\Users\keshav.gera\openssl-0.9.8k_X64\bin\openssl.exe" sha1 -binary | "C:\Users\keshav.gera\openssl-0.9.8k_X64\bin\openssl.exe" base64

Wprowadź hasło magazynu kluczy: android

**ZrRtxw36xWNYL+h3aJdcCeQQxi0=**

==================================================== ===========

używanie ręcznie poprzez kodowanie

import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.content.pm.Signature;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;


private void PrintHashKey() {

        try {
            PackageInfo info = getPackageManager().getPackageInfo("**com.keshav.patanjalidemo  Your Package Name Here**", PackageManager.GET_SIGNATURES);
            for (Signature signature : info.signatures) {
                MessageDigest md = MessageDigest.getInstance("SHA");        
                md.update(signature.toByteArray());
                Log.d("KeyHash:", Base64.encodeToString(md.digest(), Base64.DEFAULT));
            }
        } catch (PackageManager.NameNotFoundException e) {
            e.printStackTrace();
        } catch (NoSuchAlgorithmException e) {
            e.printStackTrace();
        }

    }


0

przejdź do ścieżki folderu bin w cmd, a następnie uruchom następujące polecenie

keytool -exportcert -alias androiddebugkey -keystore %HOMEPATH%\.android\debug.keystore | openssl sha1 -binary | openssl base64

otrzymasz kluczowy hash


0

dla użytkowników systemu Windows pobierz otwarty ssl z repozytorium kodu Google https://code.google.com/p/openssl-for-windows/downloads/list

Po pobraniu wypakuj zawartość do folderu, najlepiej na dysku c:.

Następnie zaktualizuj zmienną środowiskową PATH, aby móc używać pliku .exe z dowolnej lokalizacji w wierszu poleceń.

[Windows 8] Aby zaktualizować zmienną środowiskową PATH, kliknij mój komputer-> właściwości-> Zaawansowane ustawienia systemu.

Kliknij kartę Zaawansowane i kliknij przycisk „Zmienna środowiskowa” na dole okna dialogowego, a następnie wybierz wpis Ścieżka w sekcji „Zmienne systemowe”, klikając edytuj.

Wklej ścieżkę do folderu bin wyodrębnionego pliku do pobrania openssl i kliknij OK.

Będziesz musiał zamknąć i otworzyć wiersz polecenia, który mógł zostać wcześniej uruchomiony, aby można było załadować zaktualizowane ustawienia ścieżki.

Teraz uruchom to polecenie:

keytool -exportcert -alias androiddebugkey -keystore "C: \ Users \ Oladipo.android \ debug.keystore" | openssl sha1 -binary | openssl base64

Powinieneś zobaczyć klucz programisty.


0

To działa dla mnie:

C:\Users\example>keytool -exportcert -alias androiddebugkey -keystore 
"C:\Users\example\.android" | "C:\openssl\bin\openssl.exe" sha1 -binary 
| "C:\openssl\bin\oenssl.exe" base64

-1

Nie ma gwarancji, że wygenerowanie hashkey za pomocą tej jednej metody openssl zadziała. Jeśli to nie działa dla mnie. Ale dziękuję za wskazówki, jak rozwiązać mój problem.

Gwarantowane rozwiązanie: Musisz przerwać całe polecenie w osobnych poleceniach i zapisać dane wyjściowe każdego wykonania w pliku.

Możesz skorzystać z pomocy z poniższego linku:

http://www.helloandroid.com/tutorials/using-facebook-sdk-android-development-part-1

Cieszyć się :)

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.