Openssl不被视为内部或外部命令

时间:2012-08-10 06:04:04

标签: java android facebook-android-sdk keytool

我希望为我的应用生成应用程序签名,稍后将与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

我怎样摆脱这个?

17 个答案:

答案 0 :(得分:374)

在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 for Windows 32和64位:

OpenSSL for 64 Bits

OpenSSL for 32 Bits

答案 1 :(得分:22)

使用整个路径,如下所示:

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

它对我有用。

答案 2 :(得分: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
    

    出现提示时输入密码。如果该命令有效,那么您将看到一个键。

答案 3 :(得分: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

<强> Encryptedhashkey **

答案 4 :(得分: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>

答案 5 :(得分:6)

首先导航到cmd中的Java / jre / bin文件夹 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:

答案 6 :(得分:4)

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 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是系统名称放置自己的系统名称

答案 7 :(得分: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

答案 8 :(得分: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

答案 9 :(得分:1)

下载和解压缩

您可以从以下相应链接下载openssl for Windows 32和64位:

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

OpenSSL for 64 Bits OpenSSL for 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

重要更改我们的路径此处以及在系统中安装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();
        }

    }

答案 10 :(得分:0)

转到cmd中的bin文件夹路径,然后运行以下命令

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

您将获得密钥哈希

答案 11 :(得分:0)

for windows用户从谷歌的代码库https://code.google.com/p/openssl-for-windows/downloads/list下载open ssl

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

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

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

点击“高级”标签,然后点击“环境变量”&#39;在对话框底部的按钮,然后从系统变量&#39;中选择路径条目。单击编辑部分。

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

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

现在运行此命令:

keytool -exportcert -alias androiddebugkey -keystore&#34; C:\ Users \ Oladipo.android \ debug.keystore&#34; | openssl sha1 -binary | openssl base64

您应该看到开发人员密钥。

答案 12 :(得分:0)

对于那些寻找更新位置来安装openssl(32位和64位)的Windows二进制版本的人,你可以在这里找到它:

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

提供二进制分发的网站的最新列表在这里

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

答案 13 :(得分: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

答案 14 :(得分:0)

IDK(如果此处与此相关),但是如果已安装Git,则可以在“ C:\ Program Files \ Git \ usr \ bin”中找到openssl,并且可以在终端中使用该位置来存储Keystore命令

哦,是的,命令:

keytool -exportcert-别名密钥库-keystore“ C:\ Users \ YOURPATH / filename.jks” | “ C:\ Program Files \ Git \ usr \ bin \ openssl” sha1 -binary | “ C:\ Program Files \ Git \ usr \ bin \ openssl” base64

答案 15 :(得分:0)

对于那些像我现在一样迷路的人,请关注 Usama Sarwar 的回应 但如果:

<块引用>

"your_openssl_path/bin/openssl.exe"

不行,试试

<块引用>

your_openssl_path/bin/openssl.exe。

没有引号。

<块引用>

"c:\openssl\bin\openssl.exe" => 对我不起作用

<块引用>

c:\openssl\bin\openssl.exe => 为我工作

答案 16 :(得分:-1)

无法保证使用此单个openssl方法生成hashkey将起作用。 如果它对我不起作用。但感谢你给我一个解决问题的方向。

保证解决方案: 您需要在单独的命令中中断整个命令,并且必须在文件中写入每个执行的输出。

您可以从以下链接获取帮助:

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

享受:)