Openssl không được công nhận là lệnh nội bộ hoặc bên ngoài


177

Tôi muốn tạo chữ ký ứng dụng cho ứng dụng của mình mà sau này sẽ được tích hợp với Facebook. Trong một trong những hướng dẫn của Facebook, tôi đã tìm thấy lệnh này:

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

Trong hướng dẫn, nó nói rằng bằng cách chạy cmd này, quá trình tạo chữ ký của tôi sẽ bắt đầu.

Tuy nhiên, lệnh này đưa ra lỗi:

openssl is not recognized as an internal or external command

Làm thế nào tôi có thể thoát khỏi điều này?


10
Tải xuống và cài đặt OpenSSL .
Michael Petrotta

Tôi đã tải xuống 3 trong số chúng không ai tương thích: /
Khurram

1
Điều đó có nghĩa là gì, khurram?
Michael Petrotta

1
Tôi đã tải xuống nhiều phiên bản openssl từ liên kết bạn đưa ra nhưng mỗi phiên bản đều có lỗi trước khi cài đặt rằng nó không tương thích với windows 7- 64 bit. Bạn có thể cho tôi biết chính xác các lần mở mà tôi yêu cầu không
Khurram

1
bạn có thể lấy nó từ liên kết tôi đã đăng trong ans của mình bên dưới ...
Usama Sarwar

Câu trả lời:


395

Chà, tại vị trí của openssl ... bạn phải thực sự đặt đường dẫn đến thư mục openssl mà bạn đã tải xuống. Lệnh thực tế của bạn sẽ giống như:

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

Hãy nhớ rằng, đường dẫn mà bạn sẽ nhập sẽ là đường dẫn mà bạn đã cài đặt openssl ... hy vọng điều này sẽ giúp .. :-)

Biên tập:

bạn có thể tải xuống openssl cho windows 32 và 64 bit từ các liên kết tương ứng bên dưới:

OpenSSL cho 64 bit

OpenSSL cho 32 bit


1
nó nói c: \ openssl \ bin \ openssl không được nhận ra
Akhil Jain

7
một cách tốt hơn sẽ là thực thi lệnh gốc từ thư mục openssl / bin. Tức là nếu thư mục openssl của tôi nằm trong C: dev, tôi sẽ chuyển sang C: \ dev \ openssl \ bin và thực thi lệnh như hiện tại
AnhSirk Dasarp

2
bạn nên chỉ ra tệp openssl.exe: exportcert -alias androiddebugkey -keystore ~ ​​/ .android /debug.keystore | "C: \ openssl \ bin \ openssl.exe" sha1 -binary | "C: \ openssl \ bin \ op oblsl.exe" base64
Khănongphucit

@LatentBoy yess bạn đúng. cách của bạn làm việc cho tôi. Cảm ơn rất nhiều.
surhidamatya

cảm ơn ... sau khi thử khoảng một giờ, câu trả lời của bạn đã có hiệu quả với tôi
Krupal Shah

23

Sử dụng toàn bộ đường dẫn, như thế này:

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

Nó làm việc cho tôi.


18

Hãy làm theo các bước này, tôi hy vọng khóa của bạn hoạt động đúng:

  1. Bước 1 Bạn sẽ cần OpenSSL. Bạn có thể tải xuống tệp nhị phân từ dự án openssl-for-windows trên Google Code.

  2. Bước 2 Giải nén thư mục, sau đó sao chép đường dẫn đến binthư mục vào bảng tạm.

    Ví dụ: nếu tệp được giải nén vào vị trí C:\Users\gaurav\openssl-0.9.8k_WIN32, sau đó sao chép đường dẫn C:\Users\gaurav\openssl-0.9.8k_WIN32\bin.

  3. Bước 3 Thêm đường dẫn đến đường dẫn môi trường hệ thống của bạn. Sau khi PATHbiến môi trường của bạn được đặt, hãy mở cmd và gõ lệnh này:

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

    Nhập mật khẩu của bạn khi được nhắc. Nếu lệnh hoạt động, sau đó bạn sẽ được hiển thị một khóa.


FYI: Thông thường mật khẩu debug.keystore chỉ là "android".
Ai đó ở đâu đó vào

11

Điều này đã làm việc cho tôi thành công.

"C: \ Tệp chương trình \ Java \ jdk1.6.0_26 \ bin \ keytool.exe" -exportcert -alias sociall hiện -keystore "D: \ keystore \ SocialListing" | "C: \ cygwin \ bin \ openssl.exe" sha1 -binary | "C: \ cygwin \ bin \ openssl.exe" cơ sở64

Hãy cẩn thận với đường dẫn dưới đây:

  • "C: \ Tệp chương trình \ Java \ jdk1.6.0_26 \ bin \ keytool.exe"
  • "D: \ keystore \ SocialListing" hoặc có thể giống như thế này " C: \ Users \ Shaon.android \ debug.keystore "
  • "C: \ cygwin \ bin \ openssl.exe" hoặc có thể như thế này C: \ Users \ openssl \ bin \ openssl.exe

Nếu lệnh hoạt động thành công thì bạn sẽ thấy lệnh này:

Nhập mật khẩu kho khóa: typeyourpassword

Mã hóa **


10

đó là câu trả lời muộn nhưng nó sẽ giúp ích cho những người lười biếng như tôi .. thêm mã này vào lớp Ứng dụng của bạn, không cần tải xuống openssl và không cần thiết lập đường dẫn .. chỉ cần sao chép mã này .. và keyHash sẽ được tạo trong nhật ký.

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

và đừng quên thêm lớp MyApplication trong tệp kê khai:

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

Cái này có hoạt động để phát hành phiên bản facebook không? nếu không thì thế nào?
MetaSnarf

Mã này được sử dụng để tạo keyhash. Và cùng một khóa để phát hành. Đối với phiên bản phát hành, hãy đảm bảo rằng bạn đặt quyền truy cập công khai trong bảng điều khiển dành cho nhà phát triển facebook.
Sagar Chavada

Gặp lỗi "Cả bối cảnh và applicationId đều không phải là null", khi được sử dụng ở trên mã. @SagarChavada
Yesha Shah

6

Đầu tiên điều hướng đến thư mục Java / jre / bin của bạn trong cmd cd c: \ Program Files (x86) \ Java \ jre7 \ bin

Sau đó sử dụng: [thay đổi đường dẫn debug.keystore đến đúng vị trí trên hệ thống của bạn] cài đặt openssl (cho windows 32 hoặc 64 theo nhu cầu của bạn tại 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

Vì vậy, toàn bộ lệnh diễn ra như sau: [nhắc nhập mật khẩu kho khóa khi thực thi]

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. 

sau đó vào C: \ Program Files \ Java \ jdk1.8.0_05 \ bin và nhấn phím shift và nhấp chuột phải và mở cmd

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

đó là cho Sha1 qua
keytool -exportcert -alias androiddebugkey -keystore "C: \ User \ ABC \ .android.keystore" | openssl sha1 -binary | openssl base64
// và ABC là tên hệ thống đặt tên hệ thống riêng


Có gì binthư mục được bạn đề cập đến trong bước thứ hai?
Iovy Necula

2

Tôi đã sử dụng mã này:

Điều này đã làm việc cho tôi thành công.

"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

sử dụng này làm việc cho tôi. vui lòng thay đổi đường dẫn của bạn

C: \ Tệp chương trình \ 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


phải tải xuống openssl từ đây code.google.com/p/openssl-for-windows/doads/ và sao chép thư mục bin và dán vào C: \ openssl \
Azahar

1

Tải xuống và giải nén

Bạn có thể tải xuống openssl cho windows 32 và 64 bit từ các liên kết tương ứng bên dưới:

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

OpenSSL cho 64 Bits OpenSSL cho 32 Bits

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

Quan trọng thay đổi đường dẫn của chúng tôi Ở đây cũng như cài đặt ssl mở trong hệ thống của bạn

Nó hoạt động không nghi ngờ

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

Nhập mật khẩu kho khóa: android

**ZrRtxw36xWNYL+h3aJdcCeQQxi0=**

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

sử dụng thủ công thông qua mã hóa

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

đi đến đường dẫn thư mục bin trong cmd và sau đó chạy lệnh sau

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

bạn sẽ nhận được mã băm của bạn


0

cho người dùng windows tải xuống ssl mở từ kho lưu trữ mã của google https://code.google.com.vn/p/openssl-for-windows/doads/list

Sau khi tải xuống, giải nén nội dung vào một thư mục tốt nhất trong ổ đĩa c :.

Sau đó cập nhật biến môi trường PATH của bạn để bạn có thể sử dụng .exe từ bất kỳ vị trí nào trong dòng lệnh của bạn.

[windows 8] Để cập nhật biến môi trường PATH của bạn, nhấp vào máy tính của tôi-> thuộc tính-> Cài đặt hệ thống nâng cao.

Nhấp vào Tab Nâng cao và nhấp vào nút 'Biến môi trường' ở cuối hộp thoại, sau đó chọn mục Đường dẫn từ Phần 'Biến hệ thống' bằng cách nhấp vào chỉnh sửa.

Dán đường dẫn đến thư mục bin của bản tải xuống openssl và nhấp vào ok.

Bạn sẽ cần phải đóng và mở và nhắc lệnh mà bạn có thể đã khởi chạy trước đó để bạn có thể tải các cài đặt đường dẫn được cập nhật.

Bây giờ chạy lệnh này:

keytool -exportcert -alias androiddebugkey -keystore "C: \ Users \ Oladipo.android \ debug.keystore" | openssl sha1 -binary | openssl cơ sở64

Bạn sẽ thấy khóa nhà phát triển.


0

Điều này làm việc cho tôi:

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

Không đảm bảo rằng việc tạo hashkey với phương thức openssl duy nhất này sẽ hoạt động. Nếu nó không làm việc cho tôi. Nhưng cảm ơn vì đã cho tôi một hướng để giải quyết vấn đề của tôi.

Giải pháp được đảm bảo: Bạn cần ngắt toàn bộ lệnh trong các lệnh riêng biệt và phải ghi đầu ra của mỗi lần thực hiện trong tệp.

Bạn có thể nhận trợ giúp từ liên kết sau:

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

Thưởng thức :)

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.