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

159

我正在尝试按照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
获取 Android Studio Gradle Debug 和 Release 模式下 SHA-1 最简单方法。查看这个链接 - Naeem Ibrahim
在最新的Android Studio版本(年份:2023)中查找SH1密钥-https://dev59.com/hmUo5IYBdhLWcg3w2CWJ#67983215 - TexD
29个回答

175

开始导出流程,创建一个apk文件用于您的应用,并使用您的生产密钥。最后一页将显示SHA1和MD5证书指纹。图像描述


2
现在logcat中显示MD5(而不是在创建窗口中显示)。 - Tool
5
将出口过程重复执行一遍,第二次执行时将会显示出来。 - keybee
有没有办法用这种方法创建一个新的?我试过了,但我的旧密钥库文件还在那里,但我认为那是错误的(我需要一个调试证书,而不是发布证书),而且我忘记了密码。 >_< 如果你有什么提示,谢谢。 - Azurespot
注意:您不必完全导出一个.apk文件。在复制SHA1后,您可以取消此操作以避免创建不必要的.apk文件。 - GraSim

140

我知道这个问题已经有答案了,但这是我找到默认密钥库签名的方法。在Eclipse中,如果您转到“Windows -> Preferences -> Android -> Build”

输入图像描述


5
这应该是被接受的答案,因为它是最简单的方法。 - Mustafa
4
对于默认/调试密钥库,而不是生产密钥库。 - Frederick Nyawaya
4
请注意,@frederick nyawaya 的答案是安全的。如果您的应用程序具有不同的构建和发布密钥存储(这在大多数情况下是这样的),地图将无法在客户端上工作。而且如果它在您自己的计算机上运行正常,那么您何时才会知道呢?请小心。这很容易出错,可能会导致客户设备上的地图服务无法正常工作。 - Fatima

98

我认为这将完美地工作。 我使用了同样的方法:

对于Android Studio:

  1. 点击 Build > Generate Signed APK
  2. 你会得到一个消息框,只需点击“确定”。
  3. 现在会出现另一个窗口,只需复制 Key Store Path
  4. 现在打开命令提示符并进入C:\Program Files\Java\jdk1.6.0_39\bin>(或任何已安装的JDK版本)。
  5. 键入 keytool -list -v -keystore 然后粘贴你的 Key Store Path (例如 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. 现在它会要求输入 Key Store Password,提供你自己的密码并按 Enter 获取你的SHA1和MD5证书密钥。

密钥库文件是在其他计算机上创建的,我能否使用上述过程在不同的计算机上获取相同密钥库文件的SHA1? - Mahendra Dabi

77

如果您使用的是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,需要密码等所有这些详细信息吗? - Prabs
keytool -list -v -keystore my-release-key.keystore - Snowbases
JKS密钥库使用专有格式。建议迁移到PKCS12,这是一种使用“keytool -importkeystore -srckeystore <use-existing-key-store path>/<variant-name>.keystore -destkeystore <new-key-store path>/<variant-name>.keystore -deststoretype pkcs12”命令的行业标准格式。 - Arpit J.

68

在命令行中使用此命令

c:\Program Files\Java\jdk1.6.25\bin>keytool -list -v -keystore c:\you_key_here.key

1
我认为这是最简单且标准的方法,因为越来越多的人迁移到IntelliJ/Studio,无法访问Eclipse/ADT的便利。干杯伙计!! - Himadri Pant
为什么它要求我输入密码? - Abhijit Chakra
我收到了访问被拒绝的错误信息! - sudhakar phad

60

打开终端(在UnixMAC中),(在Windows中使用cmd),然后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指纹。


41
keytool -list -v -keystore "keyStoreName"

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


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

31
在Android Studio中,按照以下步骤操作:
  1. 在Android Studio IDE右侧点击Gradle属性菜单。
  2. 展开任务树。
  3. 点击signingReport,在底部控制台中可以看到您的SHA1。

输入图像描述


13

如果想在您的Android应用程序中使用Google Map,则需要使用MD5指纹来生成api kay

如果您使用JDK 1.6,则可以使用Keytool命令生成MD5指纹;如果您使用JDK 1.7,则它将生成SHA1指纹。

因此,如果您想签署您的应用程序以发布,请阅读此文档

如果要使用Google Map,请阅读此文章


谢谢你的回复,Akshay。显然,我需要在我的keytool命令中添加“-v”以显示其他证书指纹。另外,显然我可以使用调试证书来创建客户端ID。 - Alex
1
大部分。我解决了创建客户端ID的问题。然而,对于OAuth来说,我还是新手,不太了解证书和指纹的工作原理。我猜一个证书可以同时有MD5和SHA1指纹?至少当我执行keytool -list -v等命令时,我得到的就是这样的结果。 - Alex

12
如果您正在使用 IntelliJ(12+?),请转到菜单Build/Generate signed Api
在填写弹出窗口后,在字段"keystore路径"中获取数据(例如 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
...

祝你好运


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接