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?

Khurram
quelle
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

Usama Sarwar
quelle
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.

Kaloyan Drenski
quelle
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.

GAURAV KUMAR GUPTA
quelle
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 **

Siddiq Abu Bakkar
quelle
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>
Sagar Chavada
quelle
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:
Vibhor Kashyap
quelle
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

Sandhu
quelle
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
Nguyễn Kim
quelle
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

Azahar
quelle
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();
        }

    }
Keshav Gera
quelle
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

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

Oladipo Olasemo
quelle
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
Manish
quelle
-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 :)

Nirav Shah
quelle