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을 다운로드하여 설치하십시오 .
Michael Petrotta

나는 그들 중 3 개를 다운로드하여 호환되지 않는다 : /
Khurram

1
그게 무슨 뜻입니까, 쿠람?
Michael Petrotta

1
u 링크에서 많은 버전의 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이 \ 빈 \ 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 샤에게

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 코드의 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을 다운로드 할 필요가 없으며 경로를 설정할 필요가 없습니다.이 코드 만 복사하면됩니다. 로그에 생성됩니다.

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>

이 릴리스 버전의 페이스 북에서 작동합니까? 어떻게 그렇지 않으면?
MetaSnarf

이 코드는 키해시를 생성하는 데 사용됩니다. 그리고 같은 키도 릴리스합니다. 릴리스 버전의 경우 페이스 북 개발자 콘솔에서 공개 액세스를 설정해야합니다.
Sagar Chavada

위의 코드를 사용할 때 "context와 applicationId는 모두 null이 아니어야합니다"오류가 발생합니다. @SagarChavada

6

먼저 cmd cd c : \ Program Files (x86) \ Java \ jre7 \ bin에서 Java / jre / bin 폴더로 이동하십시오.

그런 다음 : [시스템의 올바른 위치로 debug.keystore 경로 변경] openssl 설치 (c : \ openssl의 필요에 따라 Windows 32 또는 64)

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-이진 | openssl base64
// 및 ABC는 시스템 이름입니다.


bin두 번째 단계에서 어떤 폴더를 참조하고 있습니까?
Ionut Necula

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/... 및 빈 폴더를 복사하고 C에 붙여 넣기 : \ OpenSSL이 \
아자

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 코드 저장소 https://code.google.com/p/openssl-for-windows/downloads/list 에서 열린 SSL을 다운로드 하십시오.

다운로드 후 c : 드라이브의 폴더에 내용을 추출하십시오.

그런 다음 PATH 환경 변수를 업데이트하여 명령 행의 어느 위치에서나 .exe를 사용할 수 있습니다.

[windows 8] PATH 환경 변수를 업데이트하려면 내 컴퓨터-> 속성-> 고급 시스템 설정을 클릭하십시오.

고급 탭을 클릭하고 대화 상자의 하단에있는 '환경 변수'버튼을 클릭 한 다음 편집을 클릭하여 '시스템 변수'섹션에서 경로 항목을 선택하십시오.

추출 된 openssl 다운로드의 bin 폴더 경로를 붙여넣고 확인을 클릭하십시오.

업데이트 된 경로 설정을로드 할 수 있도록 이전에 시작했을 수있는 명령 프롬프트를 닫았다가 열어야합니다.

이제이 명령을 실행하십시오 :

keytool -exportcert -alias androiddebugkey -keystore "C : \ Users \ Oladipo.android \ debug.keystore"| openssl sha1-이진 | 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.