KeyStore用不同的指纹签名

时间:2016-02-15 08:51:51

标签: java android

签署和上传Android应用时,我遇到了一个奇怪的问题。

我们收到了这个JKS文件。当我跑步时:
keytool -list -v -keystore key.jks -storepass THE_PASSWORD -keypass THE_PASSWORD

要列出有关它的所有信息,我会得到以下信息:

Keystore type: JKS
Keystore provider: SUN

Your keystore contains 1 entry

Alias name: 1
Creation date: 12 Feb 2016
Entry type: PrivateKeyEntry
Certificate chain length: 1
Certificate[1]:
Owner: CN=Amorphous New Media, OU=Times Media Group, O=Times Media Group, C=ZA
Issuer: CN=Amorphous New Media, OU=Times Media Group, O=Times Media    Group, C=ZA
Serial number: 323238***
Valid from: Sun Apr 28 17:21:31 SAST 2013 until: Thu Apr 29 17:21:31 SAST 2038
Certificate fingerprints:
     MD5:  D5:A5:CF:***
     SHA1: 55:18:5F:***
     SHA256: DC:36:CF:***
     Signature algorithm name: SHA1withRSA
     Version: 3

Extensions:

#1: ObjectId: 2.5.29.37 Criticality=false
ExtendedKeyUsages [
  codeSigning
]

然而,在Android Studio上,我尝试生成已签名的APK并使用此JKS文件,生成构建和apk,除了使用不同的密钥?

当我跑步时:

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

我得到以下输出:

Owner: CN=Amorphous New Media, OU=Times Media Group, O=Times Media Group, C=ZA
Issuer: CN=Amorphous New Media, OU=Times Media Group, O=Times Media Group, C=ZA
Serial number: 3232386***
Valid from: Sun Apr 28 17:21:31 SAST 2013 until: Thu Apr 29 17:21:31 SAST 2038
Certificate fingerprints:
         MD5:  EC:FB:D6:***
         SHA1: 40:A3:F0:***
         SHA256: 40:41:3C:***
         Signature algorithm name: SHA1withRSA
         Version: 3

Extensions: 

#1: ObjectId: 2.5.29.37 Criticality=false
ExtendedKeyUsages [
  codeSigning
]

请注意所有信息都是相同的......序列号,所有者,发行人,指纹以外的所有信息。

我没有在调试模式下签名,我的gradle文件指向正确的JKS文件。

另外,出于测试目的,我尝试了不同的JKS文件。并查看了与APK相比的JKS文件,所有信息都是正确的。包括SHA1键。

我有什么可以尝试的东西,或者我必须遗失的任何小东西吗? 提前谢谢大家。

1 个答案:

答案 0 :(得分:1)

所以在经历了永远的感觉后,我终于解决了这个问题。

使用的密钥库是最初从.p12文件转换的文件。尽管新的密钥库文件包含正确的指纹和正确的格式,但Android Studio中存在一个错误,如果.p12文件未正确转换或Android Studio没有正确指纹,则不会使用正确的指纹对其进行签名。使用此密钥库文件对APK进行签名时传递正确的值。

您需要手动签署APK。这是一项任务。所以我制作了一个自动脚本,可以帮到你。

https://github.com/SierraII/morphthis

此脚本将使用指定的密钥库文件对APK文件进行签名。无论以前是否签名,APK文件都将被签名。

遇到此问题的任何人,我希望这可以节省3天!