如何在Android上获取OAuth 2.0的签名证书指纹(SHA1)?


154

我正在尝试按照https://developers.google.com/console/help/#installed_applications中的步骤注册我的android应用, 这使我遵循 http://developer.android.com/tools/publishing/app- signing.html

但是,我不确定如何获取签名证书指纹(SHA1)。

我首先使用Eclipse ADT插件来导出和创建密钥库/密钥。然后,我尝试这样做keytool -list keystore mykeystore.keystore,它给了我MD5证书指纹。我需要重做签名吗(这意味着我不能使用eclipse导出向导)?

我可以先使用调试证书吗?


在导出/上传您的应用之前,请使用user2453771的答案。导出/上传后,使用frederick nyawaya的答案。记住这一点,省下数小时的痛苦。
SmulianJulian

如何使用Linux终端生成发布apk密钥库
Manish

1
获取SHA-1发行版和调试模式android studio gradle的最简单方法。检查一下
Naeem Ibrahim

Answers:


174

开始导出过程,为您的应用创建apk并使用生产密钥。最后一页同时显示您的SHA1和MD5证书指纹在此处输入图片说明


2
MD5现在出现在logcat中(创建过程中不在窗口中)。
工具

4
进行两次导出过程。它将在第二个回合中显示。
keybee 2013年

有没有一种方法可以使用这种方法创建一个新的?我尝试这样做,但是我的旧密钥库文件在那里,但是我认为它是错误的(我需要调试证书,而不是发行证书),而且我忘记了密码。> _ <如果您有小费,谢谢。
Azurespot 2014年

注意:您不必完全导出.apk。您可以在复制SHA1之后取消此操作,以避免创建不必要的.apks。
GraSim 2015年

139

我知道已经回答了这个问题,但这是我如何找到默认密钥库的签名的方法。在Eclipse中,如果您转到Windows->首选项-> Android->构建

在此处输入图片说明


5
这是公认的答案,因为这是最简便的方法。
Mustafa 2013年

3
对于默认/调试密钥库,而不是生产密钥库
Frederick Nyawaya 2014年

3
伙计们请注意,安全的答案是@frederick nyawaya。如果您的应用程序具有不同的构建和发布密钥存储库(多数情况下是这样,则该地图将无法在您的客户端上运行。上帝知道您什么时候会知道,因为它可以在您自己的计算机上正常工作。请小心。这是容易的,但你很可能最后变成了你的客户端设备具有非工作的地图服务。
蒂娜

92

我认为这将完美地工作。我使用相同的:

对于Android Studio:

  1. 单击构建 > 生成签名的APK
  2. 您将看到一个消息框,只需单击“确定”。
  3. 现在将出现另一个窗口,只需复制“ 密钥存储路径”即可
  4. 现在打开命令提示符,然后转到C:\ Program Files \ Java \ jdk1.6.0_39 \ bin>(或任何已安装的jdk版本)。
  5. 键入keytool -list -v -keystore,然后粘贴您的密钥存储路径 (例如C:\ Program Files \ Java \ jdk1.6.0_39 \ bin> keytool -list -v -keystore“ E:\ My Projects \ Android \ android studio \ signed apks \ Hello World \ HelloWorld.jks”)。
  6. 现在,它将询问密钥存储密码,提供您的密码,然后按Enter以获得您的SHA1和MD5证书密钥。

通过其他计算机创建密钥库文件可我得到相同的密钥存储文件SH1具有不同machinge上述程序
马亨德拉达比马

非常感谢
Hiren's

74

如果您使用的是Mac甚至Linux,只需将其复制并粘贴到终端应用程序中,您将立即获得SHA1密钥。无需更改任何内容。

 keytool -list -v -keystore ~/.android/debug.keystore -alias androiddebugkey -storepass android -keypass android

输出示例:

Alias name: androiddebugkey
Creation date: 17 Feb 12
Entry type: PrivateKeyEntry
Certificate chain length: 1
Certificate[1]:
Owner: CN=Android Debug, O=Android, C=US
Issuer: CN=Android Debug, O=Android, C=US
Serial number: 4f3dfc69
Valid from: Fri Feb 17 15:06:17 SGT 2012 until: Sun Feb 09 15:06:17 SGT 2042
Certificate fingerprints:
     MD5:  11:10:11:11:11:11:11:11:11:11:11:11:11:11:11:11
     SHA1: 11:11:11:11:11:11:11:11:11:11:11:11:11:11:11:11:11:11:01:11
     Signature algorithm name: SHA1withRSA
     Version: 3

请@yuku示例。/home/desktop/././。,abc.jks,所有密码为n,我们是否需要所有这些详细信息?
Prabs 2015年

谢谢。仅这是最简单的方法。
赛卡(Sayka)

你真的救了我的一天。万分感谢。
卡兰·纳格帕尔

keytool -list -v -keystore my-release-key.keystore
Snow

JKS密钥库使用专有格式。建议使用“ keytool -importkeystore -srckeystore <使用中的现有密钥存储路径> / <variant-name> .keystore -destkeystore <新密钥存储路径> / <”迁移到行业标准格式PKCS12。变体名称> .keystore -deststoretype pkcs12”。
Arpit J.19年


59

打开终端(在Unix中,在MAC中),cmdWindows中),并打开以下cd路径(您的Java):

C:\Program Files\Java\jdk1.6.0_43\bin>

运行以下命令:

keytool -list -v -keystore C:\Users\leon\.android\debug.keystore -alias androiddebugkey -storepass android -keypass android

只需更改路径debug.keystore,您将同时获得MD5和SHA-1指纹。


40
keytool -list -v -keystore "keyStoreName"

从应用程序密钥库所在的目录中运行此命令。


这可用于获取要导出和发布的客户端应用程序的SHA1。这可能与您在eclipse中看到的一个不同,后者是一个调试密钥库。
dannyhan12 2014年

29

在Android Studio中,请按照以下步骤操作:

  1. 单击android studio IDE右侧的Gradle属性菜单。
  2. 展开任务树。
  3. 单击signingReport您可以在底部控制台看到SHA1

在此处输入图片说明


13

看看您Google Map当时是否要使用,需要MD5指纹才能api kay在Android应用程序中使用Google Map 进行生成。

MD5如果使用Keytool命令会生成指纹,如果使用JDK 1.6会生成SHA1指纹JDK 1.7

因此,如果您想对应用程序进行签名以进行发布,请阅读此内容

如果要使用,请google-map阅读此内容


感谢您重播Akshay。显然,我需要在我的keytool命令中添加-v以显示其他证书指纹。另外,显然我可以使用调试证书来创建客户端ID。
亚历克斯(Alex)

1
大多。我解决了创建客户ID的问题。但是,我通常对OAuth并不陌生,而不是证书和指纹的工作方式。我猜证书可以同时具有MD5和SHA1指纹吗?至少当我执行keytool -list -v etc命令时,我得到的就是
Alex

12

如果您使用的是IntelliJ(12+?),请转到菜单Build / Generatesigned Api

填充弹出窗口后,在“密钥存储路径”字段中获取数据(例如C:\ Users \ user \ Documents \ store \ store)

并在命令行中运行:

>keytool -list -v -keystore "C:\Users\user\Documents\store\store"

....
         MD5: 11:C5:09:73:50:A4:E5:71:A2:26:13:E0:7B:CD:DD:6B
    -->  SHA1: 07:0B:0E:E8:F7:22:59:72:6A:1C:68:05:05:CF:2E:6F:59:43:48:99
         SHA256: E6:CE:DA:37:C1:18:43:C1:A3:F0:9E:8F:1A:C2:69:AF:E6:41:F7:C0:18:
1D:1D:55:5D:F0:52:6C:EE:77:84:A7
...

祝好运


12

如果有人使用Android Studio ...

单击:生成>生成已登录APK创建新密钥:这将生成“ .jks”文件

使用以下命令读取数据(SHA1和其他信息):

$ keytool-列表-v -keystore filename.jks


额外提示:用于为Facebook生成密钥哈希的命令$keytool -keystore filename.jks | openssl sha1 -binary | openssl base64
MuhFred

4

对于使用OpenSSL的用户,您可以通过以下方式检索SHA1指纹:

OpenSSL> dgst -sha1 my-release-key.keystore

这将导致以下输出:

在此处输入图片说明


4

如果您使用的是Android Studio。您无需使用cmd提示符生成SHA1指纹。您只需要使用Android Studio的默认Maps Activity创建一个项目。在该项目中,您可以在Values文件夹下的google_maps_api.xml中获取指纹。希望这会帮助你。:)

在此处输入图片说明


4

这是我为此的简单解决方案:

点击Gradle按钮,您可以在右侧顶部找到。您将看到所有gradle文件。现在转到android,然后双击signingReport。gradle构建完成后,您将看到SHA键。检查以下图像以获取逐步指南。

一旦您单击Gradle,请检查以下图像。希望这对某人有帮助。

第1步:

图片第一步

第2步:

图片第二步


3

如果您使用的是Android Studio。您可以通过Gradle Tasks快速获得SHA1证书指纹(调试,发布... 所有构建类型 !!):

签署报告

SHA1显示在消息日志中

Android插件(在gradle应用中配置)创建了默认的调试模式。

com.android.application

到密钥库的文件路由:

HOME / .android / debug.keystore

我建议 debug.keystore 附加到build.gradle。为此,将文件debug.keystore放入应用程序文件夹,然后在gradle应用程序中添加SigningConfigs:

apply plugin: 'com.android.application'

    android {
        ................
        signingConfigs {
            debug {
                storeFile file("../app/debug.keystore")
                storePassword "android"
                keyAlias "androiddebugkey"
                keyPassword "android"
            }
            release {
                storeFile file("../app/debug.keystore")
                storePassword "android"
                keyAlias "androiddebugkey"
                keyPassword "android"
            }
        }    
        ........
    }

附加:如果要创建要发布的文件,请将文件release.keystore放到应用程序文件夹中。(此示例使用相同的debug.keystore)



3

第一次让我感到困惑,但是我为您建议了Windows的最终可行解决方案

1)打开cmd并转到您的Java / jdk / bin目录(只需按一下cd ..即可返回一个文件夹,然后cd NAME_FOLDER再向前一个文件夹),在我的情况下,是最终文件夹:C:\Program Files\Java\jdk1.8.0_73\bin> 在此处输入图片说明

2)现在键入此命令 keytool -list -v -keystore C:\Users\YOUR_WINDOWS_USER\.android\debug.keystore -alias androiddebugkey -storepass android -keypass android

结果,您必须获得以下内容: 在此处输入图片说明


2

我认为这将完美地工作。我使用相同的:

对于Android Studio:

单击构建>生成签名的APK。您将看到一个消息框,只需单击“确定”。

现在将出现另一个窗口,只需复制“密钥存储路径”即可。

现在打开命令提示符,然后转到C:\ Program Files \ Java \ jdk1.6.0_39 \ bin>(或任何已安装的jdk版本)。

键入keytool -list -v -keystore,然后粘贴您的密钥存储路径(例如C:\ Program Files \ Java \ jdk1.6.0_39 \ bin> keytool -list -v -keystore“ E:\ My Projects \ Android \ android studio \ signed apks \ Hello World \ HelloWorld.jks”)。

现在它将询问密钥存储密码,提供您的密码,然后按Enter键以获取您的SHA1和MD5证书密钥。

现在,将此SHA1密钥添加到“凭据”标签中的Google开发者控制台,并将android studio中的构建变体更改为发布模式。


无法进入密钥存储密码我输入密码,但不是在命令提示符下键入
马亨德拉达比马

密码不可见,只需正确输入密码,然后按Enter键,您就会得到密钥
Rishab Jain

谢谢,我输入了错误的密码,现在可以正常工作谢谢大家
Mahendra Dabi

1

对于那些在Mac上寻找keytool的用户。跟着这些步骤:

首先,请确保安装Java JDK http://docs.oracle.com/javase/7/docs/webnotes/install/mac/mac-jdk.html

然后在命令提示符下键入:

/usr/libexec/java_home -v 1.7

它会吐出类似以下内容:

/Library/Java/JavaVirtualMachines/jdk1.7.0_51.jdk/Contents/Home

keytool与处于同一目录javac。即:

/Library/Java/JavaVirtualMachines/jdk1.7.0_51.jdk/Contents/Home/bin

在bin目录中,您可以使用keytool。


1

如果您使用的是Mac / Linux,则可以通过在终端中编写以下行来获取SHA1指纹:

keytool -list -v -keystore ~/.android/debug.keystore -alias androiddebugkey -storepass android -keypass android

此后可能有两件事

  1. 它将要求您输入密码

    只需输入

安卓

然后按Enter,您可以在下面显示的输出中找到SHA1键。

  1. 它将要求您下载合适的程序(并提供一些列表)

    只需在终端输入以下内容

sudo apt安装openjdk-8-jre-headless

然后再次在终端中运行以下命令: keytool -list -v -keystore ~/.android/debug.keystore -alias androiddebugkey -storepass android -keypass android

这次,您将进入第1步,只需输入密码为

安卓

然后您将在输出中获得SHA1指纹。


0

使用portecle

  • 文件>打开密钥库文件
  • 输入密钥库密码
  • 右键单击别名>证书详细信息> SHA-1指纹


0

我想向与我有相同问题的人发布通知。我完成了生成调试SHA-1和发行版SHA-1的步骤。我试图将Google Sign-In API与我的应用程序连接。

我遇到了一个问题:debug .apk可以正常工作,它将与Google Sign-In连接并进行身份验证。当手动安装到手机时,我的发行版.apk也可以使用。当我将发布的.apk发布到Google Play商店时,我的google登录无法通过身份验证,并且会出现问题!

最长的时间我无法弄清楚,但是我发现我的应用正在被google签名,即开发者控制台顶部的消息显示:此应用已启用Google Play应用签名。

我转到“发布管理”选项卡,然后向下滚动到“应用签名”,并在那里找到SHA-1。将其添加到我的代码中并在“ firebase控制台”(我用作Google登录的后端)上之后,一切似乎都正常了。看来我的发布密钥库已被Google签名的证书取代...我不确定这是否正在发生,但是它解决了我的问题,并允许我的Google Play商店发布apk正确地通过Google签名进行了身份验证在!


0

逐步解决方案:

  1. 打开命令提示符或Mac终端
  2. 将目录更改为keytool文件位置的目录。通过使用命令更改目录cd <directory path>。(注意:如果任何目录名称都有空格\,请在两个单词之间添加空格。cd /Applications/Android\ Studio.app//Contents/jre/jdk/Contents/Home/bin/

    • 要找到您的keytool的位置,请转到android studio ..打开您的项目。然后去

    • 文件>项目结构> SDK位置..并找到JDK位置。

  3. 通过以下命令运行keytool:( keytool -list -v –keystore <your jks file path>注意:如果任何目录名称都有空格,请在两个单词之间添加\。example keytool -list -v -keystore /Users/username/Desktop/tasmiah\ mobile/v3/jordanos.jks

  4. 命令提示您输入密码..所以输入您的密码..然后您得到结果


0

这是惰性编码器的工具:

1.添加依赖项:

compile 'com.vk:androidsdk:1.6.9'

2在活动/应用程序中的某处添加以下行:

String[] fingerprints = VKUtil.getCertificateFingerprint(this, getPackageName()); 
Log.d("SHA1", fingerprints[0]);

3打开logcat并捕获消息。

4利润!


0
  1. 打开命令提示符
  2. 将工作目录导航到1.8.0 / bin
  3. keytool -list -v -alias androiddebugkey -keystore %USERPROFILE%\.android\debug.keystore
  4. 如果要求您输入密码,请按Enter键

0

如果要通过对keystore.jks文件进行签名来获取Fingerprint-sha1密钥,请从终端运行以下命令:

keytool -list -v -keystore <.../path/keystore.jks>

keytool -list -v -keystore /Users/Home/Projects/Keystore/myApp_keystore.jks
Enter keystore password: 

Keystore type: JKS
Keystore provider: SUN

Your keystore contains 1 entry

Alias name:myApp_alias
Owner: CN=xxx, OU=xxx Dev, O=ZZZ, L=Dhaka, ST=Dhaka, C=BD
..........


Certificate fingerprints:
MD5:  12:10:11:12:11:11:11:11:11:11:33:11:11:11:11:11
SHA1: 11:44:11:11:55:11:17:11:11:66:11:11:88:11:11:77:11:11:01:11
.....................

0

请从菜单右侧单击Gradle,然后单击:app然后单击android文件夹,然后存在SigningReport文件名双击。它会开始执行,并在一段时间内向您显示SHA-1代码只需复制代码即可。并将其粘贴到您需要的地方

图像中突出显示的签名报告

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.