我如何找到并运行密钥工具


185

我在这里阅读Facebook开发人员的开发指南

它说我必须使用keytool导出我的应用程序的签名,例如:

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

我不知道如何找到要运行的keytool。我试图打开Windows命令提示符并粘贴上面的命令,但没有成功。


如果您正在运行基于Linux的系统,/usr/local/java/bin# ./keytool如果您正在运行Windowsfind the JDK install path and check bin folder
Elshan

我发现这个问题你可以用它来解决问题stackoverflow.com/a/57390582/13405428
ashraf alqaabera

Answers:


184

我自己找到了一个解决方案,如下所示。它工作正常。

"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

6
我在这里找到了它:C:\ Program Files \ Java \ jre1.8.0_111 \ bin \ keytool.exe
Jaime Montoya

9
或C:\ Program Files \ Android \ Android Studio \ jre \ bin
SHAHM

感谢@SHAHM:非常适合我们不想显式下载Java AGAIN的人,他们每个星期都被bug升级到最新版本。
皮特·阿尔文,

116

只需将它们输入Windows命令提示符。

cd C:\Program Files\Java\jdk1.7.0_09\bin

keytool -exportcert -alias androiddebugkey -keystore "C:\Users\userName\.android\debug.keystore" -list -v

基本密码是 android

您将与呈现MD5SHA1SHA256键; 选择您需要的那个。


3
这对我有用。对于调试键,请使用-alias androiddebugkey。
Broo

我使用发行版的下一行:1)cd C:\ Program Files \ Java \ jdk1.8.0_162 \ bin和下一个2)keytool -list -v -keystore“ C:\ AndroidProjects \ Project1 \ app \ myapp.keystore “
安德鲁·格罗

2
keytool error: java.lang.Exception: Only one command is allowed: both -exportcert and -list were specified.
Gustaf Liljegren

80

要获取android键哈希码,请按照以下步骤操作(适用于Facebook应用)

  1. 此处下载适用于Windows的openssl
  2. 现在解压缩到C盘
  3. 打开cmd提示
  4. 类型 cd C:\Program Files\Java\jdk1.6.0_26\bin
  5. 然后只输入 keytool -export -alias myAlias -keystore C:\Users\<your user name>\.android\myKeyStore | C:\openssl-0.9.8k_WIN32\bin\openssl sha1 -binary | C:\openssl-0.9.8k_WIN32\bin\openssl enc -a -e
  6. 完成了

要获取证书指纹(MD5)代码,请按照以下步骤操作

  1. 转到-C:\ Program Files \ Java \ jdk1.6.0_26 \ bin
  2. 在bin文件夹中运行jarsigner.exe文件
  3. 打开cmd提示
  4. 类型 cd C:\Program Files\Java\jdk1.6.0_26\bin
  5. 然后再次在cmd上键入 keytool -list -keystore "C:/Documents and Settings/<your user name>/.android/debug.keystore"
  6. 它将立即要求输入密钥库密码。默认为“ android”,然后输入
  7. 做完了

这对我一直有效,直到最后一步。输入“ android”后,它会吐出垃圾...我猜是不是使用了正确的编码?如果输入“ blah”之类的信息,则表明密码错误。因此,当我输入“ android”时,它知道密码正确无误
ArtOfWarfare 2012年

我发现问题出在我没有留下-list和-v标志
ArtOfWarfare 2012年

21

keytool是JDK的一部分。

尝试添加%{JAVA_HOME}\到exec语句或之前c:\{path to jdk}\bin


我将cer文件和truststore文件放在同一目录中,并使用了以下命令:"%JAVA_HOME%\bin\keytool" -import -keystore truststore -file certificate.cer -alias my-alias
Todd Hale


9

Robby Pond的答案可以推广为使用JAVA_HOME环境变量,也可以补偿路径中可能出现的任何空白(例如Program Files):

"%JAVA_HOME%\bin\keytool" -exportcert -alias androiddebugkey -keystore ~/.android/debug.keystore | openssl sha1 -binary | openssl base64

4

keytool是jdk的一部分,应该是$ JAVA_HOME / bin / keytool


4

Keytool是Java SDK的一部分。您应该可以在Java SDK目录中找到它,例如C:\ Program Files \ Java \ jdk1.6.0_14 \ bin


4

在cmd窗口(需要以管理员身份运行)上,

cd %JAVA_HOME% 

仅在设置了系统环境变量JAVA_HOME的情况下有效。要为您的路径设置系统变量,您可以执行此操作

setx %JAVA_HOME% C:\Java\jdk1.8.0_121\

然后,您可以输入

cd c:\Java\jdk1.8.0_121\bin

要么

cd %JAVA_HOME%\bin

然后,执行JAVA jdk提供的任何命令,例如

keytool -genkey -v -keystore myapp.keystore -alias myapp

您只需按Enter键即可回答问题(等同于在cmd行中键入值)!密钥将生成


3

keytool位于JDK bin目录($ JAVA_HOME / bin)中。JAVA_HOME是您的JDK安装目录。要使用该命令行,您还应该在PATH环境变量中包含$ JAVA_HOME / bin。


3

Android:在Android的哪里运行keytool命令

如果在类路径变量中设置了JRE,则可以在dos命令提示符下运行Keytool命令。

例如,如果您要获取Android的SDK调试证书的MD5指纹,

只需运行以下命令...

C:\Documents and Settings\user\.android>  keytool -list -alias androiddebugkey -keystore debug.keystore -storepass android -keypass android

C:\Documents and Settings\user\.android>包含debug.keystore必须经过认证的的路径在哪里?

有关详细信息,请访问http://code.google.com/android/add-ons/google-apis/mapkey.html#getdebugfingerprint


3

取决于您的Eclipse版本(我使用的是Kepler)。转到Windows>首选项> Android>构建。

您会找到调试密钥库的位置路径以及SHA1指纹(您可以复制和使用它)


3

我在另一篇文章中发现了这一点,该文章并没有获得多少支持,但是对我来说非常有帮助。因此将其添加到此处。

Android Studio将附带一个keytool。

C:\Program Files\Android\Android Studio\jre\bin

您可以在下面查看Richar Heap的他的文章,并提供有用的参考。我以前确实看到过,但忘记了。https://stackoverflow.com/a/51524526/4446406


2

KEYTOOL在JAVAC SDK中。因此您必须在包含javac的目录中找到它


2

如果您安装了具有Xamarin /移动开发支持的Visual Studio,那么C:\Program Files\Android\jdk\microsoft_dist_openjdk_{version}\bin\像我这样,您将在此处安装Java 。


1

keytoolJDK随附。如果您正在使用cygwin,则可能已经在您的路径上了。否则,您可能会在JDK的bin文件夹中四处浏览。

无论如何,您可能都需要使用cygwin才能使外壳管道(|)工作。


你能告诉我如何在命令下运行吗?keytool -exportcert -alias androiddebugkey -keystore〜/ .android / debug.keystore | openssl sha1 -binary | openssl base64
Nguyen Minh Binh

1
是的,我做到了。当我运行上述命令时,CMD会说:'openssl'无法识别为内部或外部命令,可操作程序或批处理文件。
Nguyen Minh Binh

您可能还需要通过cygwin的安装程序来安装openssl软件包。
马修·威利斯,

1
我已经安装了openssl软件包。问题仍然存在:(
Nguyen Minh Binh

您可以自己运行openssl吗?当您键入“打开”并按Tab时,您看到什么选项?
马修·威利斯,

1

在遇到相同问题时,几乎没有观察到(Windows)。1.壳管很重要。2.如果您使用的是OpenSSL或Cygwin,则一定要安装它。3. JDK附带了keytool,因此您必须在命令中指向它,或者将cd放入exe所在的JDK / bin文件夹中。4.调试密钥库通常位于〜/ .android / debug.keystore中。 5.密码是“ android”,无论您是-keypass还是在提示时键入。6.对于别名,您可以使用任何编辑器打开(请勿保存,只需打开和关闭)密钥库文件并读取它。7.最重要-在引号内和不引号之间指定密钥库路径是不同的。我通过使用双引号内的密钥库路径来使其工作。正如remix090378所说并按照说明,此命令确实有效-cd C:\ Program Files \ Java \ jdk1.7.0_09 \ bin

keytool -exportcert-别名androiddebugkey -keystore“ C:\ Users \ userName.android \ debug.keystore”-列表-v


0

就我而言,我已经使用命令生成了一个APK文件ionic cordova build android --prod,我需要获取现有APK文件的SHA-1指纹。这是通过在App目录中运行以下命令来获得的:

keytool -list -printcert -jarfile app-debug.apk

因此,我基本上在以下应用程序位置中运行了上述命令:

C:\myApp\platforms\android\app\build\outputs\apk\debug>keytool -list -printcert -jarfile app-debug.apk

这给了我SHA1指纹: 7B:6B:AD:...

希望这对某人有帮助!


0

假设您已经在系统中安装了Java,并且最好安装了JDK(回答Windows,因为您在问题中提到了它),则应该在安装bin文件夹中具有keytool实用程序。

在这种情况下,下一步是将该bin文件夹添加到PATH Windows安装环境变量中。

下次打开Windows Shell并键入时,keytool您将能够运行实际的实用程序。

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.