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


177

Я хочу сгенерировать подпись приложения для моего приложения, которое позже будет интегрировано с 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

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


10
Скачайте и установите OpenSSL .
Майкл Петротта

Я скачал 3 из них, никто не совместим: /
Khurram

1
Что это значит, хуррам?
Майкл Петротта

1
Я скачал много версий openssl по ссылке, которую вы дали, но каждая из них выдает ошибку перед установкой, что она не совместима с Windows 7-64 бит. Можете ли вы сказать мне, какой именно openssl мне нужен
Khurram

1
Вы можете получить его по ссылке, которую я разместил в своем ответе ниже ...
Усама Сарвар

Ответы:


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

Редактировать:

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

OpenSSL для 64 бит

OpenSSL для 32 бит


1
он говорит, что c: \ openssl \ bin \ openssl не распознан
Ахил Джайн

7
лучшим способом было бы выполнить оригинальную команду из каталога openssl / bin. Т.е. если мой каталог openssl находится в C: dev, я бы перешел в C: \ dev \ openssl \ bin и выполнил бы команду как есть
AnhSirk Dasarp

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

@LatentBoy, да, ты прав. твой путь работал на меня. Большое спасибо.
Surhidamatya

спасибо ... после попытки около часа ваш ответ сработал для меня
Krupal Shah

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. Вы можете скачать двоичный файл из проекта openssl-for-windows в Google Code.

  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

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

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

Encryptedhashkey **


10

Ответ запоздал, но он поможет таким ленивым людям, как я ... добавьте этот код в ваш класс Application, нет необходимости скачивать 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

Этот код используется для генерации хеша ключей. И тот же ключ к выпуску тоже. Для версии выпуска убедитесь, что вы установили публичный доступ в консоли разработчика facebook.
Сагар Чавада

Получение ошибки «И context, и applicationId должны быть ненулевыми», когда используется приведенный выше код. @SagarChavada
Йеша Шах

6

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

Затем используйте: [измените путь к debug.keystore в правильное местоположение в вашей системе] установите 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 

это для Sha1 мимо этого
keytool -exportcert -alias androiddebugkey -keystore "C: \ User \ ABC \ .android.keystore" | openssl sha1 -binary | openssl base64
// и ABC - это имя системы, введите собственное имя системы


На какую binпапку вы ссылаетесь на втором этапе?
Ионут Некула

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


необходимо скачать openssl отсюда code.google.com/p/openssl-for-windows/downloads/… и скопировать папку bin и вставить ее в C: \ openssl \
Azahar

1

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

Вы можете скачать 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

Введите пароль хранилища ключей: 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

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

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

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


0

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

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

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

[windows 8] Чтобы обновить переменную среды PATH, нажмите «Мой компьютер» -> «Свойства» -> «Дополнительные параметры системы».

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

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

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

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

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

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

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

Вы можете получить помощь по следующей ссылке:

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

Наслаждаться :)

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.