我正在将新版Android应用推向Google Play商店,我希望它能够触发应用当前用户的更新,而不是将其视为新版本。我没有最初用于签署现有应用程序的私钥,所以我正在尝试以下方法来恢复它。
我能够进入第3步,但我不确定keytool -list -keystore my-signing-key.keystore命令的.keystore文件名是什么,有什么想法吗?
然后发出此命令:
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
然后再次使用keytool打印出你的所有别名 签署密钥库:
keytool -list -keystore my-signing-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 :(得分:6)
除非您拥有包含私钥的原始密钥库文件,否则无法从.apk中提取它。 .apk仅包含公钥和使用私钥生成的签名,但实际上并不包含私钥。
考虑一下 - 如果.apk包含实际的私钥,并且提取它的说明非常简单,那么任何人都可以从他们的应用程序中获取Google,Facebook,Microsoft或Amazon私钥,并签署任何恶意软件它。 (Apple不受这种攻击的影响,因为他们没有发布任何Android软件:-P)
所以,除非你有权访问用于签署之前.apk的原始密钥库文件(并且你知道密码 - 感谢@ 323go),否则我担心你运气不好。