对于自行管理签名密钥的 Android 开发者,SHA-256 证书指纹是应用的唯一加密身份。本指南将介绍如何通过三种方法,从已签名的 APK 文件或原始密钥库中检索该指纹。
从 APK 文件中检索 SHA-256
如果您有最终的已签名 APK 文件,但无法方便地访问原始密钥库或其密码,那么这些方法会很有用。
方法 1A:使用 apksigner(推荐用于 APK)
无论 APK 使用的是 V1、V2、V3 还是 V4 签名方案,apksigner 工具都是从中提取签名信息的最先进、最可靠的方式。
第 1 步:找到 apksigner
(示例:/Users/username/Library/Android/sdk/build-tools/34.0.0/apksigner)
第 2 步:运行命令
打开终端或命令提示符,前往 APK 的保存目录,然后执行以下命令:
apksigner verify --print-certs <path/to/your/app.apk>
第 3 步:找到 SHA-256 指纹
输出内容将列出每个签名者的证书详情。找到 SHA-256 digest 标签:
Signer #1 certificate SHA-256 digest:
a32a43cd459f7ce6b82c552f5d876989d53e6af1c0b2d35fb677b51a1dc4f0e5
这串由英文冒号分隔的长十六进制字符就是您的 SHA-256 证书指纹。
方法 1B:对 APK 使用 keytool
第 1 步:找到 keytool 和 APK
确保您知道 keytool 实用程序(JDK 安装的一部分)和已签名的 APK 文件的位置。
第 2 步:运行命令
使用以下命令,并将已签名的 APK 文件指定为密钥库:
keytool -printcert -jarfile <path/to/your/app.apk>
第 3 步:找到 SHA-256 指纹
输出内容将包含“证书指纹”部分。找到 SHA-256 所在行。
从密钥库文件中检索 SHA-256
这是在任何操作系统上从源密钥库文件中提取证书指纹时实际使用的方法。
这是在任何操作系统上从源密钥库文件中提取证书指纹时实际使用的方法。
方法 2:使用标准 keytool 实用程序
第 1 步:找到工具和密钥库文件
您需要准备:
- 您的密钥库文件:用于为应用签名的文件(.jks 或 .keystore)。您必须知道其路径、密码以及其中密钥的别名。
- keytool 实用程序:此工具包含在 Java 开发工具包 (JDK) 中。
| 操作系统 | Keytool 位置 |
| Windows | 通常位于 JDK 安装目录的 bin 目录下(例如 C:\Program Files\Java\jdk-xx\bin\)。 |
| macOS / Linux | 安装 JDK 后,通常可直接在终端中使用。 |
第 2 步:切换到正确的位置
打开终端或命令提示符。为简化下一步操作,您可以切换到包含密钥库文件的目录:
# 示例:请替换为您的实际路径
cd /path/to/your/keystore/directory
第 3 步:运行命令
使用以下命令指示 keytool 以详细模式列出证书详情。
注意:如果系统无法识别 keytool,您必须指定该实用程序的完整路径(例如“/path/to/jdk/bin/keytool”)。
keytool -list -v -keystore [your_keystore_name.jks] -alias [your_key_alias]
- 将 [your_keystore_name.jks] 替换为文件的实际名称。
- 将 [your_key_alias] 替换为您的签名密钥的特定别名(例如 mykey)。
第 4 步:找到 SHA-256 指纹
该实用程序会提示您输入密钥库密码。输入后,输出内容将显示证书详情。
找到证书指纹部分:
Certificate fingerprints:
SHA1: XX:XX:XX:XX:XX:...
SHA256: 0A:B3:C6:D9:E2:F5:81:B4:C7:D0:E3:F6:92:A5:B8:C1:D4:E7:F0:83:96:A9:BC:D1:E4:F7:03:96:A9:BC:D1:E4
Signature algorithm name: SHA256withRSA
...
“SHA256:”旁边的这串由英文冒号分隔的长十六进制字符,就是您的公开 SHA-256 证书指纹。