本文介绍了三种查看和生成APK签名的方法:通过keytool命令直接查看keystore文件中的证书指纹;从已签名的APK中提取CERT.RSA文件并查看其详细签名信息;以及使用jarsigner工具为未签名的APK包进行签名操作。这些步骤为Android应用的安全检查和打包发布提供了基础支持。

博主博客

1. 查看 keystore 文件中的签名信息

使用以下命令查看 keystore(例如 debug.keystore)中的证书信息:

keytool -list -keystore debug.keystore

输出示例:

Keystore type: JKS
Keystore provider: SUN
Your keystore contains 1 entry
androiddebugkey, Mar 21, 2013, PrivateKeyEntry, 
Certificate fingerprint (MD5): E0:F4:90:EE:CD:77:17:0E:B8:C4:AC:64:B2:F6:FC:83

2. 查看已签名的 APK 文件(三方或系统应用)签名

  1. 使用压缩工具(如 WinRAR)打开待查看的 APK 文件;
  2. 将其中的 META-INF 文件夹解压出来,获取 CERT.RSA 文件;
  3. 执行以下命令查看签名信息:
keytool -printcert -file META-INF/CERT.RSA

输出示例:

Owner: CN=Android Debug, O=android, C=US
Issuer: CN=Android Debug, O=Android, C=US
Serial number: 514ab2e1
Valid from: Thu Mar 21 15:12:33 CST 2013 until: Sat Mar 14 15:12:33 CST 2043
Certificate fingerprints:
MD5:  E0:F4:90:EE:CD:77:17:0E:B8:C4:AC:64:B2:F6:FC:83
SHA1: 7F:E5:11:D8:37:4F:DA:D7:75:EA:A5:8C:47:06:85:95:6D:1D:3F:2B
Signature algorithm name: SHA1withRSA
Version: 3

3. 为 APK 文件签名

使用 jarsigner 工具为 APK 签名,命令格式如下:

jarsigner -verbose -keystore [keystorePath] -signedjar [apkOut] [apkin] [alias]

参数说明:

  • -verbose:输出详细信息
  • -keystore:密钥库位置
  • -signedjar:指定签名后生成的 APK 文件名
  • [apkin]:待签名的 APK 文件
  • [alias]:密钥库中对应的别名

示例命令:

jarsigner -verbose -keystore debug.keystore -signedjar test2.apk tap_unsign1.apk timdong

执行过程输出示例:

Enter Passphrase for keystore: 
    adding: META-INF/MANIFEST.MF
    adding: META-INF/ANDROIDD.SF
    adding: META-INF/ANDROIDD.RSA
    signing: res/drawable/ic_launcher.png
    signing: res/layout/main.xml
    signing: AndroidManifest.xml
    signing: resources.arsc
    signing: classes.dex

注意: 执行签名命令时会提示输入密钥库的密码。