Openssl wird nicht als interner oder externer Befehl erkannt


176

Ich möchte eine Anwendungssignatur für meine App generieren, die später in Facebook integriert wird. In einem der Tutorials von Facebook habe ich diesen Befehl gefunden:

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

Im Tutorial heißt es, dass durch Ausführen dieses Cmd mein Prozess zum Generieren der Signatur beginnt.

Dieser Befehl gibt jedoch einen Fehler aus:

openssl is not recognized as an internal or external command

Wie kann ich das loswerden?


9
Laden Sie OpenSSL herunter und installieren Sie es .
Michael Petrotta

Ich habe 3 davon heruntergeladen, niemand ist kompatibel: /
Khurram

Was bedeutet das, Khurram?
Michael Petrotta

Ich habe viele Versionen von openssl von dem Link heruntergeladen, den Sie angegeben haben, aber jede von ihnen gibt vor der Installation einen Fehler aus, dass es nicht mit Windows 7-64 Bit kompatibel ist. Können Sie mir die genaue Öffnung sagen, die ich benötige
Khurram

Sie können es von dem Link bekommen, den ich in meiner Ans unten gepostet habe ...
Usama Sarwar

Antworten:


394

Nun, an der Stelle von openssl ... müssen Sie tatsächlich den Pfad zu Ihrem openssl-Ordner angeben, den Sie heruntergeladen haben. Ihr tatsächlicher Befehl sollte folgendermaßen aussehen:

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

Denken Sie daran, dass der Pfad, den Sie eingeben, der Pfad ist, auf dem Sie den openssl installiert haben ... hoffe, das hilft .. :-)

Bearbeiten:

Sie können openssl für Windows 32 und 64 Bit über die entsprechenden Links unten herunterladen:

OpenSSL für 64 Bit

OpenSSL für 32 Bits


1
es heißt c: \ openssl \ bin \ openssl wird nicht erkannt
Akhil Jain

7
Ein besserer Weg wäre, den ursprünglichen Befehl aus dem Verzeichnis openssl / bin auszuführen. Dh wenn sich mein openssl-Verzeichnis in C: dev befindet, würde ich nach C: \ dev \ openssl \ bin wechseln und den Befehl so ausführen, wie er ist
AnhSirk Dasarp

2
Sie sollten auf die Datei openssl.exe hinweisen: exportcert -alias androiddebugkey -keystore ~ ​​/ .android /debug.keystore | "C: \ openssl \ bin \ openssl.exe" sha1 -binary | "C: \ openssl \ bin \ op enssl.exe" base64
phanhongphucit

@ LatentBoy ja du hast recht. Dein Weg hat für mich funktioniert. Vielen Dank.
Surhidamatya

danke ... nachdem du es ungefähr eine Stunde lang versucht hast, hat deine Antwort für mich
funktioniert

23

Verwenden Sie den gesamten Pfad wie folgt:

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

Es hat bei mir funktioniert.


18

Bitte folgen Sie diesen Schritten, ich hoffe, Ihr Schlüssel funktioniert richtig:

  1. Schritt 1 Sie benötigen OpenSSL. Sie können die Binärdatei aus dem openssl-for-windows- Projekt in Google Code herunterladen .

  2. Schritt 2 Entpacken Sie den Ordner und kopieren Sie den Pfad zum binOrdner in die Zwischenablage.

    Wenn die Datei beispielsweise an den Speicherort entpackt wurde C:\Users\gaurav\openssl-0.9.8k_WIN32, kopieren Sie den Pfad C:\Users\gaurav\openssl-0.9.8k_WIN32\bin.

  3. Schritt 3 Fügen Sie den Pfad zu Ihrem Systemumgebungspfad hinzu. Nachdem Ihre PATHUmgebungsvariable festgelegt wurde, öffnen Sie den Befehl cmd und geben Sie den folgenden Befehl ein:

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

    Geben Sie Ihr Passwort ein, wenn Sie dazu aufgefordert werden. Wenn der Befehl funktioniert, wird Ihnen ein Schlüssel angezeigt.


Zu Ihrer Information: Normalerweise lautet das debug.keystore-Passwort nur "android".
Jemand irgendwo

11

Das ist bei mir erfolgreich gelungen.

"C: \ Programme \ 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

Seien Sie vorsichtig mit dem folgenden Pfad:

  • "C: \ Programme \ Java \ jdk1.6.0_26 \ bin \ keytool.exe"
  • "D: \ keystore \ SocialListing" oder wie folgt: " C: \ Users \ Shaon.android \ debug.keystore "
  • "C: \ cygwin \ bin \ openssl.exe" oder kann wie folgt aussehen : C: \ Users \ openssl \ bin \ openssl.exe

Wenn der Befehl erfolgreich funktioniert, wird der folgende Befehl angezeigt:

Geben Sie das Keystore-Passwort ein: Geben Sie Ihr Passwort ein

Encryptedhashkey **


10

Es ist eine späte Antwort, aber es wird faulen Leuten wie mir helfen. Fügen Sie diesen Code zu Ihrer Anwendungsklasse hinzu. Sie müssen openssl nicht herunterladen und müssen den Pfad nicht festlegen. Sie müssen nur diesen Code kopieren. keyHash wird es tun im Protokoll generiert.

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);
        }
    }
}

und vergessen Sie nicht, die MyApplication-Klasse im Manifest hinzuzufügen:

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

funktioniert das für die Release-Version von Facebook? wenn nicht wie?
MetaSnarf

Dieser Code wird zum Generieren von Keyhash verwendet. Und der gleiche Schlüssel auch für die Veröffentlichung. Stellen Sie für die Release-Version sicher, dass Sie den öffentlichen Zugriff in der Facebook-Entwicklerkonsole festlegen.
Sagar Chavada

Fehler "Sowohl Kontext- als auch Anwendungs-ID dürfen nicht null sein", wenn der obige Code verwendet wird. @SagarChavada
Yesha Shah

6

Navigieren Sie zunächst zu Ihrem Java / jre / bin-Ordner in cmd cd c: \ Programme (x86) \ Java \ jre7 \ bin

Verwenden Sie dann: [debug.keystore-Pfad an den richtigen Speicherort auf Ihrem System ändern] installiere openssl (für Windows 32 oder 64 gemäß Ihren Anforderungen unter 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

Der gesamte Befehl sieht also folgendermaßen aus: [fordert bei der Ausführung zur Eingabe des Keystore-Passworts auf]

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. 

Gehen Sie dann zu C: \ Programme \ Java \ jdk1.8.0_05 \ bin und drücken Sie die Umschalttaste. Klicken Sie mit der rechten Maustaste und öffnen Sie cmd

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

das ist für Sha1 nach diesem
Keytool -exportcert -alias androiddebugkey -keystore "C: \ User \ ABC \ .android.keystore" | openssl sha1 -binary | openssl base64
// und ABC ist der Systemname und der eigene Systemname


Auf welchen binOrdner beziehen Sie sich im zweiten Schritt?
Ionut Necula

2

Ich habe diesen Code verwendet:

Das ist bei mir erfolgreich gelungen.

"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

benutze das hat bei mir geklappt. Bitte ändern Sie Ihren Pfad

C: \ Programme \ 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


muss openssl von hier herunterladen code.google.com/p/openssl-for-windows/downloads/… und bin Ordner kopieren und in C: \ openssl \
Azahar

1

Downloads und Entpacken

Sie können openssl für Windows 32 und 64 Bit über die entsprechenden Links unten herunterladen:

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

OpenSSL für 64 Bit OpenSSL für 32 Bit

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

Wichtig, ändern Sie unseren Pfad hier und installieren Sie open ssl in Ihrem System

Es funktioniert ohne Zweifel

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

Geben Sie das Keystore-Passwort ein: android

**ZrRtxw36xWNYL+h3aJdcCeQQxi0=**

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

Manuelles Verwenden durch Codierung

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

Gehen Sie in cmd zum Pfad des Bin-Ordners und führen Sie den folgenden Befehl aus

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

Sie erhalten Ihren Schlüssel-Hash


0

Für Windows-Benutzer laden Sie Open SSL aus dem Code-Repository von Google unter https://code.google.com/p/openssl-for-windows/downloads/list herunter

Extrahieren Sie nach dem Download den Inhalt in einen Ordner, vorzugsweise auf Ihrem Laufwerk c:.

Aktualisieren Sie dann Ihre Umgebungsvariable PATH, damit Sie die EXE-Datei von jedem Ort in Ihrer Befehlszeile aus verwenden können.

[Windows 8] Um Ihre PATH-Umgebungsvariable zu aktualisieren, klicken Sie auf Mein Computer-> Eigenschaften-> Erweiterte Systemeinstellungen.

Klicken Sie auf die Registerkarte "Erweitert" und dann unten im Dialogfeld auf die Schaltfläche "Umgebungsvariable". Wählen Sie dann den Eintrag "Pfad" aus dem Abschnitt "Systemvariablen" aus, indem Sie auf "Bearbeiten" klicken.

Fügen Sie den Pfad in den Ordner bin des extrahierten openssl-Downloads ein und klicken Sie auf OK.

Sie müssen die zuvor gestartete Eingabeaufforderung schließen und öffnen, damit Sie die aktualisierten Pfadeinstellungen laden können.

Führen Sie nun diesen Befehl aus:

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

Sie sollten den Entwicklerschlüssel sehen.


0

Das funktioniert bei mir:

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

Es kann nicht garantiert werden, dass das Generieren von Hashkey mit dieser einzelnen openssl-Methode funktioniert. Wenn es bei mir nicht funktioniert. Aber danke, dass Sie mir eine Anweisung zur Lösung meines Problems gegeben haben.

Garantierte Lösung: Sie müssen den gesamten Befehl in separate Befehle unterteilen und die Ausgabe jeder Ausführung in eine Datei schreiben.

Sie können die Hilfe über den folgenden Link abrufen:

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

Genießen :)

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.