无法将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
2012年

我下载了其中3个,没有人兼容:/
Khurram,2012年

1
库拉姆是什么意思?
迈克尔·彼得罗塔

1
我从u提供的链接中下载了许多版本的openssl,但每个版本在安装前都给出了与Windows 7-64位不兼容的错误。您能告诉我我所需要的openssl确切吗
Khurram

1
您可以从下面我在ans中发布的链接中获取该信息
Usama Sarwar,2012年

Answers:


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 Jain13年

7
更好的方法是从openssl / bin目录执行原始命令。即,如果我的openssl目录位于C:dev中,我将移至C:\ dev \ openssl \ bin,并按原样执行命令
AnhSirk Dasarp 2013年

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 2013年

谢谢...想约一个小时后,你的回答为我工作
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 Code上的openssl-for-windows项目下载二进制文件。

  2. 步骤2解压缩文件夹,然后将路径复制到bin到剪贴板。

    例如,如果文件解压缩到该位置C:\Users\gaurav\openssl-0.9.8k_WIN32,则复制path 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-别名社交列表-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

如果命令成功运行,那么您将看到以下命令:

输入密钥库密码:输入密码

加密哈希密钥**


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开发人员控制台中设置了公共访问权限。
Sagar Chavada '17

在上面的代码中使用时,出现错误“ context和applicationId都必须为非null”。@SagarChavada
Shah

6

首先导航到cmd cd c:\ Program Files(x86)\ Java \ jre7 \ bin中的Java / jre / 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过去通过此
密钥工具-exportcert -alias androiddebugkey -keystore“ C:\ User \ ABC \ .android.keystore” | openssl sha1 -binary | 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


必须从此处code.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

重要的是 更改此处的路径,以及在系统中安装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

转到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下载open ssl

下载后,将内容提取到文件夹中,最好在c:驱动器中。

然后更新您的PATH环境变量,以便您可以从命令行中的任何位置使用.exe。

[Windows 8]要更新PATH环境变量,请单击我的电脑->属性->高级系统设置。

单击高级选项卡,然后单击对话框底部的“环境变量”按钮,然后通过单击编辑从“系统变量”部分中选择路径条目。

将路径粘贴到解压缩的openssl下载的bin文件夹中,然后单击“确定”。

您将需要关闭和打开,并在之前启动命令提示符,以便可以加载更新的路径设置。

现在运行以下命令:

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.