opensslは内部または外部コマンドとして認識されません


177

後でFacebookに統合するアプリのアプリケーション署名を生成したいと思います。Facebookのチュートリアルの1つで、次のコマンドを見つけました。

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

チュートリアルでは、このcmdを実行することで、署名を生成するための私のプロセスが始まると書かれています。

ただし、このコマンドではエラーが発生します。

openssl is not recognized as an internal or external command

どうすればこれを取り除くことができますか?


10
OpenSSLをダウンロードしてインストールします
Michael Petrotta 2012

私はそれらのうち3つをダウンロードしましたが、互換性のあるものはありません:/
Khurram

1
どういう意味だ、クラム?
Michael Petrotta 2012

1
私はあなたが与えたリンクからopensslの多くのバージョンをダウンロードしましたが、それらのそれぞれはインストール前にWindows 7-64ビットと互換性がないというエラーを出します。私が必要とする正確なopensslを教えてください
Khurram

1
下のansに投稿したリンクから取得できます...
Usama Sarwar

回答:


395

まあ、opensslの場所で...ダウンロードしたopensslフォルダーへのパスを実際に配置する必要があります。実際のコマンドは次のようになります。

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

入力するパスは、opensslをインストールしたパスになります。これが役立つことを願っています。:-)

編集:

以下のそれぞれのリンクから、windows 32および64ビット用のopensslをダウンロードできます。

64ビット用のOpenSSL

32ビット用のOpenSSL


1
c:\ openssl \ bin \ opensslは認識されない、と言います
Akhil Jain

7
より良い方法は、openssl / binディレクトリから元のコマンドを実行することです。つまり、opensslディレクトリがC:devにある場合は、C:\ dev \ openssl \ binに移動して、コマンドをそのまま実行します
AnhSirk Dasarp '27

2
openssl.exeファイルを指摘する必要があります。exportcert -alias androiddebugkey -keystore〜/ .android /debug.keystore | "C:\ openssl \ bin \ openssl.exe" sha1 -binary | "C:\ openssl \ bin \ op enssl.exe" base64
phanhongphucit 2013年

@LatentBoyはい、あなたは正しいです。あなたのやり方が私のために働いた。どうもありがとう。
Surhidamatya 2013年

おかげで...約1時間試した後、あなたの答えは私にとって
うまくいき

23

次のように、パス全体を使用します。

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

それは私のために働いた。


18

次の手順に従ってください。キーが正しく機能することを願っています。

  1. ステップ1 OpenSSLが必要です。バイナリは、Google Codeのopenssl-for-windowsプロジェクトからダウンロードできます。

  2. ステップ2フォルダを解凍し、binフォルダへのパスをクリップボードにコピーします。

    たとえば、ファイルがその場所C:\Users\gaurav\openssl-0.9.8k_WIN32に解凍されている場合は、パスをコピーしますC:\Users\gaurav\openssl-0.9.8k_WIN32\bin

  3. ステップ3システム環境パスにパスを追加します。PATH環境変数を設定したら、cmdを開いて次のコマンドを入力します。

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

    プロンプトが表示されたらパスワードを入力します。コマンドが機能する場合は、キーが表示されます。


参考:通常、debug.keystoreのパスワードは「android」です。
誰かどこか

11

これでうまくいきました。

"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

以下のパスに注意してください:

  • 「C:\ Program Files \ Java \ jdk1.6.0_26 \ bin \ keytool.exe」
  • "D:\ keystore \ SocialListing"または次のようにすることができます " C:\ Users \ Shaon.android \ debug.keystore "
  • 「C:\ cygwin \ bin \ openssl.exe」またはこのようにすることができますC:\ Users \ openssl \ bin \ openssl.exe

コマンドが正常に機能する場合は、次のコマンドが表示されます。

キーストアのパスワードを入力してください:typeyourpassword

暗号化されたハッシュキー**


10

遅い答えですが、私のような怠惰な人々に役立ちます..このコードをアプリケーションクラスに追加します。opensslをダウンロードする必要はなく、パスを設定する必要もありません。このコードをコピーするだけで十分です。keyHashはログに生成されます。

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

MyApplicationクラスをマニフェストに追加することを忘れないでください。

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

これはFacebookのリリースバージョンで機能しますか?そうでない場合はどうですか?
MetaSnarf 2017

このコードは、キーハッシュを生成するために使用されます。そして、リリースの同じキーも。リリースバージョンの場合、Facebook開発者コンソールでパブリックアクセスを設定していることを確認してください。
Sagar Chavada

上記のコードを使用すると、「contextとapplicationIdの両方がnull以外である必要があります」というエラーが発生します。@SagarChavada
Shah

6

まず、cmd cd c:\ Program Files(x86)\ Java \ jre7 \ binのJava / jre / binフォルダーに移動します

次に、次を使用します:[debug.keystoreパスをシステム上の正しい場所に変更] install openssl(Windows 32または64の場合は、必要に応じて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

したがって、コマンド全体は次のようになります。[実行時にキーストアパスワードの入力を求めるプロンプト]

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. 

次にC:\ Program Files \ Java \ jdk1.8.0_05 \ binに移動し、Shiftキーを押しながら右クリックしてcmdを開きます

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

つまり、この
keytool -exportcert -alias androiddebugkey -keystore "C:\ User \ ABC \ .android.keystore"を通過したSha1の場合です。openssl sha1 -binary | openssl base64
// ABCはシステム名であり、独自のシステム名を入力します


bin次のステップで参照しているフォルダは何ですか?
Ionut Necula 2017

2

私はこのコードを使用しました:

これでうまくいきました。

"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

これを使用して私のために働いた。パスを変更してください

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


ここからcodes.google.com/p/openssl-for-windows/downloads/…からopensslをダウンロードし、binフォルダをコピーしてC:\ openssl \に貼り付ける必要があります
Azahar

1

ダウンロードと解凍

以下の各リンクから、windows 32および64ビット用のopensslをダウンロードできます。

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

64ビットのOpenSSL 32ビットのOpenSSL

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

重要な システムでオープンSSLを変更ここに私たちのパスなどをインストールします

それは疑いなく働いています

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

キーストアのパスワードを入力してください: android

**ZrRtxw36xWNYL+h3aJdcCeQQxi0=**

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

コーディングによる手動使用

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

cmdのbinフォルダーパスに移動し、次のコマンドを実行します

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

あなたはあなたのキーハッシュを取得します


0

Windowsの場合、ユーザーはGoogleのコードリポジトリからオープンSSLをダウンロードします。https://code.google.com/p/openssl-for-windows/downloads/list

ダウンロード後、コンテンツをできればc:ドライブのフォルダーに抽出します。

次に、PATH環境変数を更新して、コマンドラインの任意の場所から.exeを使用できるようにします。

[windows 8] PATH環境変数を更新するには、[マイコンピューター]> [プロパティ]> [システムの詳細設定]をクリックします。

[詳細設定]タブをクリックし、ダイアログの下部にある[環境変数]ボタンをクリックして、[システム変数]セクションから[編集]をクリックしてパスエントリを選択します。

解凍したopensslダウンロードのbinフォルダーへのパスを貼り付けて、[OK]をクリックします。

更新されたパス設定をロードできるように、以前に起動したコマンドプロンプトを閉じて開く必要があります。

次のコマンドを実行します。

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

開発者キーが表示されます。


0

これは私にとってはうまくいきます:

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

この単一のopensslメソッドでハッシュキーを生成することが保証されるわけではありません。うまくいかない場合。しかし、私の問題を解決するための方向性を教えてくれてありがとう。

保証された解決策:コマンド全体を個別のコマンドに分割し、すべての実行の出力をファイルに書き込む必要があります。

次のリンクからヘルプを利用できます。

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

楽しい :)

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.