我有一个首次使用Adobe Air创建的android应用程序(及其生产密钥库)。很久以前,公司转而使用常规的Android SDK来开发应用程序,但由于该应用程序已经投入使用,我们使用的密钥库仍然是同一个(由Adobe Air创建)。Keystore SHA1不同于cert.rsa SHA1 APK
我使用密钥工具提取谷歌Places API的的SHA1,我得到了类似的规定:
Alias name: <alias_name>
Creation date: Jan 11, 2015
Entry type: PrivateKeyEntry
Certificate chain length: 1
Certificate[1]:
Owner: CN=<company_name>, OU=, O=, C=US
Issuer: CN=<company_name>, OU=, O=, C=US
Serial number: <lotsofnumbers>
Valid from: Mon Mar 28 14:08:17 IST 2011 until: Sat Mar 29 14:08:17 IDT 2036
Certificate fingerprints:
MD5: ..:8D:F7
SHA1: ..:E6:69
SHA256: ..:38:9A
Signature algorithm name: SHA1withRSA
Version: 3
Extensions:
#1: ObjectId: 2.5.29.37 Criticality=false
ExtendedKeyUsages [
codeSigning
]
这SHA1(由E6整理:69)在谷歌Places API所从来没有做过,所以我检查什么该CERT.RSA的APK包含,它看上去几乎除了证书的指纹相同:
Valid from: Mon Mar 28 14:08:17 IST 2011 until: Sat Mar 29 14:08:17 IDT 2036
Certificate fingerprints:
MD5: ..:E1:30
SHA1: ..:72:74
SHA256: ..:9D:6D
Signature algorithm name: SHA1withRSA
Version: 3
Extensions:
#1: ObjectId: 2.5.29.37 Criticality=false
ExtendedKeyUsages [
codeSigning
]
这SHA1(以72:74结束)非常完美,我终于成功地使用谷歌Places API的生产。但我不明白为什么这两个证书指纹是不同的。
我是1000%确定它是相同的密钥库,那么这怎么可能?
当我看到Android的调试密钥信息的结构相同的方式,但扩展是不同的:
Alias name: androiddebugkey
Creation date: Oct 26, 2014
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: 3bddeb55
Valid from: Sun Oct 26 21:03:56 IST 2014 until: Tue Oct 18 22:03:56 IDT 2044
Certificate fingerprints:
MD5: ..:01:17
SHA1: ..:00:77
SHA256: ..:32:93
Signature algorithm name: SHA256withRSA
Version: 3
Extensions:
#1: ObjectId: 2.5.29.14 Criticality=false
SubjectKeyIdentifier [
KeyIdentifier [
0000: <weird hexa number and characters>
0010: <weird hexa number and characters>
]
]
总结我的问题:
- 这是如何实现的SHA1做不匹配?
- 它可能是扩展差异?
- 如何使用keytool(或其他工具)向我展示正确的SHA1?
- 我可以摆脱此代码签名扩展回到“正常的android密钥库”?
据我所知,这种方法只会显示你的调试密钥库的SHA1 – yogipriyo