Openssl не распознается как внутренняя или внешняя команда

Я хочу создать подпись приложения для моего приложения, которое позже будет интегрировано с Facebook. В одном из учебников Facebook, я нашел эту команду:

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

в учебнике говорится, что, запустив этот cmd, начнется мой процесс создания подписи.

однако, эта команда выдает ошибку:

openssl is not recognized as an internal or external command

Как я могу избавиться от этого?

15 ответов


хорошо на месте 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...надеюсь, это поможет..:-)

Edit:

вы можете скачать openssl для windows 32 и 64 бит из соответствующих ссылок ниже:

OpenSSL для 64 бит

OpenSSL для 32 бит


используйте весь путь, например:

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

это сработало для меня.


пожалуйста, следуйте этим шагам, я надеюсь, что ваш ключ работает правильно:

  1. Шаг 1 вам понадобится OpenSSL. Вы можете скачать двоичный файл из openssl-for-windows проект по коду Google.

  2. Шаг 2 распакуйте папку, затем скопируйте путь к bin папку в буфер обмена.

    например, если файл распакован в папку C:\Users\gaurav\openssl-0.9.8k_WIN32, затем скопировать путь C:\Users\gaurav\openssl-0.9.8k_WIN32\bin.

  3. Шаг 3 добавьте путь к вашей системной среде path. После PATH переменная окружения установлена, откройте cmd и введите следующую команду:

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

    введите пароль при запросе. Если команда работает, то вам будет показан ключ.


Это работает для меня успешно.

"C:\Program файлы\папку Java\jdk1.6.\0_26 бин\ключей.ехе" -exportcert -псевдоним sociallisting -хранилище "D:\keystore\SocialListing" | "C:\cygwin\bin\openssl.exe " sha1-binary | "C:\cygwin\bin\openssl - ... ехе" в base64

будьте осторожны с ниже путь :

  • "C:\Program файлы\папку Java\jdk1.6.\0_26 бин\ключей.EXE-файл"
  • "D:\keystore\SocialListing" или это может быть вот так"C:\Users\Shaon.android\debug.хранилища ключей"
  • "C:\cygwin\bin\openssl.EXE-файл" или может быть такой C:\Users\openssl\bin\openssl.exe

Если команда успешно работает, то вы увидите эту команду :

введите пароль хранилища ключей: typeyourpassword

Encryptedhashkey**


это поздний ответ, но это поможет ленивым людям, как я.. добавьте этот код в свой класс приложений, нет необходимости загружать 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 в manifest:

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

сначала перейдите в папку Java/jre/bin в cmd cd c:\Program файлы (x86)\Java\jre7\bin

затем используйте : [изменить отладка.путь хранилища ключей к правильному местоположению в вашей системе] установите 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:

я использовал этот код:

это работает для меня успешно.

"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 файлы\Java\jre7\bin keytool-exportcert-псевдоним androiddebugkey-хранилище ключей "C:\Users\Ace - ... android\debug.keystore " | "C:\openssl\bin

\в OpenSSL.exe " sha1-binary | "C:\openssl\bin\openssl - ... ехе" в base64


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 it’s C:\Program Files\Java\jdk1.8.0_05\bin 
4:Paste all the files you copied from Openssl’s bin folder to the Jdk folder. 

затем перейти C:\Program файлы\Java\jdk1.8.0_05\bin и нажмите клавишу shift, щелкните правой кнопкой мыши и откройте cmd

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

это для Sha1 мимо этого
keytool-exportcert-псевдоним androiddebugkey-хранилище ключей "C:\User\ABC\.андроид.keystore " | openssl sha1-binary / openssl base64
//и ABC-это имя системы имя системы


загрузки и распакуйте

вы можете скачать openssl для windows 32 и 64 бит из соответствующих ссылок ниже:

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

OpenSSL для 64 бит OpenSSL для 32 бит

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

важно измените наш путь здесь, а также установите open 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

Enter пароль хранилища ключей: 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();
        }

    }

для тех, кто ищет более недавнее место для установки двоичной версии Windows openssl (32bit и 64bit), вы можете найти его здесь:

http://slproweb.com/products/Win32OpenSSL.html

обновленный список веб-сайтов, которые предлагают бинарные дистрибутивы здесь

http://www.openssl.org/related/binaries.html


перейдите к пути к папке bin в cmd, а затем выполните следующую команду

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

вы получите свой ключ хэш


для пользователей windows загрузите open ssl из репозитория кода googlehttps://code.google.com/p/openssl-for-windows/downloads/list

после загрузки извлеките содержимое в папку, предпочтительно на диске c:.

затем обновите переменную среды PATH, чтобы вы могли использовать .exe из любого места в командной строке.

[windows 8] чтобы обновить переменную среды PATH, щелкните Мой Компьютер- > Свойства - >расширенная система Настройки.

перейдите на вкладку Дополнительно и нажмите кнопку "переменная среды" в нижней части диалогового окна, затем выберите запись пути из раздела "системные переменные", нажав кнопку Изменить.

вставьте путь к папке bin извлеченной загрузки openssl и нажмите кнопку ОК.

вам нужно будет закрыть и открыть и командную строку, которую вы, возможно, ранее запустили, чтобы вы могли загрузить обновленные настройки пути.

Теперь запускаем этот команда:

keytool-exportcert-псевдоним androiddebugkey-хранилище ключей "C:\Users\Oladipo - ... android\debug.keystore " | openssl sha1-binary / openssl base64

вы должны увидеть ключ разработчика.


это работает для меня:

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

не гарантируется, что создание хэш-ключа с помощью этого одного метода openssl будет работать. Если это не сработает для меня. Но спасибо, что дал мне направление, чтобы решить мою проблему.

Гарантированное Решение : Вам нужно разбить всю команду на отдельные команды и записать вывод каждого выполнения в файл.

вы можете воспользоваться помощью по следующей ссылке :

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

наслаждайтесь :)