为什么指纹在我新签名的apk中有所不同?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了为什么指纹在我新签名的apk中有所不同?相关的知识,希望对你有一定的参考价值。
在将密钥库的类型从PKCS12更改为JKS后,我遇到了获取相同指纹的问题。
为了进行更改,我创建了一个新的JKS密钥库,删除了其中的密钥,并从.p12文件中导入了我需要的密钥。使用keytool -keystore keystore.jks -list
验证密钥时,它会输出指纹:
(SHA1): 21: ... :39
这是.p12文件的指纹,指纹谷歌说我以前的apks已经。当我用这个证书签署我的apk并尝试将其上传到Playstore时,它说证书有指纹:
SHA1: C7: ... :AF
当我用KeyStore Explorer检查原始的.p12文件和新的.jks文件时,他们都将SHA1: C7: ... :AF
列为指纹。
EDIT1
keytool -keystore disneyquiz.p12 -storetype PKCS12 -alias 1 -list
Enter keystore password:
1, Jun 4, 2014, PrivateKeyEntry,
Certificate fingerprint (SHA1): 21: ... :39
keytool -keystore quizstore.jks -list
Enter keystore password:
Keystore type: JKS
Keystore provider: SUN
Your keystore contains 1 entry
key0, Dec 3, 2014, PrivateKeyEntry,
Certificate fingerprint (SHA1): 21: ... :39
新的Apk
keytool -printcert -file CERT.RSA
Owner: CN=CBP Development, OU=CBP Development, O=CBP Development, C=US
Issuer: CN=CBP Development, OU=CBP Development, O=CBP Development, C=US
Serial number: 36663939343135303a31343636393337363665663a2d38303030
Valid from: Tue Jun 03 19:29:37 EDT 2014 until: Sat Jun 04 19:29:37 EDT 2039
Certificate fingerprints:
MD5: F6: ... :72
SHA1: C7: ... :AF
SHA256: 7C:D6: ... :67:B9
Signature algorithm name: SHA1withRSA
Version: 3
Extensions:
#1: ObjectId: 2.5.29.37 Criticality=false
ExtendedKeyUsages [
codeSigning
]
原始APK
keytool -printcert -file CERT.RSA
Owner: CN=CBP Development, OU=CBP Development, O=CBP Development, C=US
Issuer: CN=CBP Development, OU=CBP Development, O=CBP Development, C=US
Serial number: 36663939343135303a31343636393337363665663a2d38303030
Valid from: Tue Jun 03 19:29:37 EDT 2014 until: Sat Jun 04 19:29:37 EDT 2039
Certificate fingerprints:
MD5: AD: ... :CA
SHA1: 21: ... :39
SHA256: D2:7D: ... :8E:47
Signature algorithm name: SHA1withRSA
Version: 3
Extensions:
#1: ObjectId: 2.5.29.37 Criticality=false
ExtendedKeyUsages [
codeSigning
]
编辑2:
原始.p12文件是使用Adobe Air Certificate生成器生成的,原始apk是使用Adobe Flash Professional CC编译的。在测试证书并尝试以各种方式签署APK后,我认为唯一的可能性是Flash Professional签名过程以某种方式在签署apk时更改报告的指纹。闪存中的CERT.RSA创建了apk的META-INF与新apk的CERT.RSA相匹配。希望有人建议如何签署我的新apk,以便我可以更新我的应用程序。
问题是使用gradle,使用从p12键导入的密钥进行签名。
修复步骤:
- 将apk的扩展名更改为zip
- 不解压缩apk,但双击打开拉链
- 删除META-INF文件夹
- 将扩展名从zip更改为apk
- 使用以下命令从cmd提示符号登录你的apk
jarsigner -keystore -storepass
- zip algin the apk
zipalign [-f] [-v] infile.apk outfile.apk
对齐是一个定义字节对齐边界的整数。这必须始终为4(提供32位对齐),否则它实际上什么都不做。
我能够使用这些步骤成功重新发布我的一个
我有同样的问题。你找到了解决方案吗?
使用此命令行,我的指纹与apk相同。也许,它可以帮助你:
openssl pkcs12 -in certificat.p12 -nodes -passin pass:PASSWORD | openssl x509 -fingerprint
这也发生在我身上,事实证明我的密钥已经从.p12文件转换而来,并且生成了与以前不同的签名。在android上构建并签名的APK上运行此工具为我解决了问题,因为它为您开发了针对您的步骤https://github.com/SierraII/morphthis
以上是关于为什么指纹在我新签名的apk中有所不同?的主要内容,如果未能解决你的问题,请参考以下文章