2014-12-04 55 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

    相關問題