2014-12-04 49 views
8

我在将密钥库的类型从PKCS12更改为JKS之后得到相同的指纹。为什么我新签名的apk中的指纹不同?

为了进行更改,我创建了一个新的JKS密钥库,删除了其中的密钥,并从.p12文件导入了我需要的密钥。当验证与keytool -keystore keystore.jks -list 关键它输出指纹:

(SHA1): 21: ... :39 

这是.p12文件的指纹,指纹谷歌说我以前的APK已。当我签我的APK与此证书,并尝试将其上传到Play商店中,它说证书有指纹:

SHA1: C7: ... :AF 

当我同时检查原始.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的证书生成发电机密封或者,并且原始的apk是使用Adobe Flash Professional CC编译的。在测试证书并尝试以各种方式签署APK之后,我认为唯一的可能是Flash Professional签名过程以某种方式在签署apk时更改所报告的指纹。闪存中的CERT.RSA创建了apk的META-INF与新apk的CERT.RSA相匹配。希望有人建议如何签署我的新APK,以便我可以更新我的应用程序。

+0

你确定你选择正确的认证吗?什么是您的证书列表? – Braiam 2014-12-04 01:18:11

+0

密钥库中只有一个证书,而p12只有一个证书。我不明白为什么指纹在以不同方式检查时显示出不同的结果。 – Jimbo145 2014-12-04 01:21:08

回答

1

我有同样的问题。你找到解决方案吗?

使用此命令行,我的指纹与apk相同。也许,它可以帮助你:

openssl pkcs12 -in certificat.p12 -nodes -passin pass:PASSWORD | openssl x509 -fingerprint 
2

问题在于使用gradle时,使用从p12键导入的密钥签名。

步骤来解决:

  1. 变化APK扩展到拉链
  2. 不要解压APK,而是通过双击
  3. 删除META-INF文件夹
  4. 变化的拉链打开从zip到apk的扩展名
  5. 使用以下命令从cmd提示符号签名您的apk

的jarsigner -keystore -storepass

  • 拉链褐藻胶的APK
  • 的zipalign [-f] [-V] infile.apk outfile.apk

    的alignment是一个定义字节对齐边界的整数。这必须始终是4(它提供了32位对齐),否则它实际上什么都不做。

    我能够重新发布我的一个成功的使用这些步骤

    +0

    为我工作。谢谢。 – ilyabreev 2015-11-17 06:36:11

    +0

    但是它仍然没有回答这个问题。 – ilyabreev 2015-11-17 06:36:38

    相关问题