2012-11-07 39 views
1

可能重複:
Lost my keystore for uploaded app on android market檢索私鑰現有的Android應用

我推Android應用程序的新版本的谷歌Play商店,我希望它觸發爲應用程序的當前用戶提供更新,而不是將其視爲新版本。我沒有最初用於簽署現有應用程序的私鑰,因此我正在嘗試以下操作來恢復它。

我能夠到達第3步,但我不確定.keystore文件名是用於keytool -list -keystore my-signing-key.keystore命令的,有什麼想法?

  1. 首先,解壓縮APK並解壓文件/META-INF/ANDROID_.RSA (這個文件也可能CERT.RSA,但應該只有一個.RSA 文件)。
  2. 然後發出以下命令:

    的keytool -printcert -file ANDROID_.RSA您將獲得證書 指紋這樣的:

    MD5:B3:4F:BE:07:AA:78:24: DC:CA:92:36:FF:AE:8C:17:DB SHA1:16:59:E7:E3:0C:AA:7A:0D:F2:0D:05:20:12:A8:85: 0B:32:C5:4F:68 簽名算法名:SHA1withRSA

  3. 然後再次使用密鑰工具,打印出你 簽名密鑰庫的所有別名:

    的keytool -list -keystore我的簽名,key.keystore

您將獲得別名的列表和他們的證書指紋:

android_key, Jan 23, 2010, PrivateKeyEntry, 
Certificate fingerprint (MD5): B3:4F:BE:07:AA:78:24:DC:CA:92:36:FF:AE:8C:17:DB 

瞧!我們現在可以確定apk已經用這個密鑰庫和別名'android_key'簽名。

+0

這是不可能的,需要它之前已經多次在這裏蓋被關閉,例如[忘記我的密鑰庫爲Android Market上的應用程序上傳(http://stackoverflow.com/questions/11715621/lost -My-密鑰庫用於上傳-APP-上的Android市場) –

回答

5

除非你有保存私鑰原始密鑰庫文件,你不能從.apk文件解壓縮。 .apk只包含公鑰和使用私鑰生成的簽名,但它實際上並不包含私鑰本身。請考慮這一點 - 如果.apk包含實際的私鑰,並且提取它的指令非常簡單,任何人都可以從他們的應用中獲取Google,Facebook,Microsoft或Amazon私鑰,並簽署任何惡意軟件用它。 (蘋果不受此攻擊影響,因爲它們不提供任何Android軟件:-P)

因此,除非您有權訪問使用過的原始密鑰庫文件(並且知道密碼短語 - 感謝@ 323go)簽署以前的.apk,我擔心你運氣不好。

+0

我知道了,謝謝您的答覆。所以只要我得到原始的keystore文件,我就可以用它來退出新版本? – c12

+2

只要你有原始密鑰庫和該密鑰庫文件的PASSPHRASE,你就很好。如果沒有,您將不得不放棄應用程序或將其刪除。 – 323go

+0

作爲@ 323go提到的,您還需要知道該密鑰庫的密碼。我會更新答案。 –