我丢失了.keystore文件?

111

大家好,长话短说,我曾在一台无法访问的计算机上进行开发。我能够检索源代码,但无法检索用于签名和发布我的应用程序到市场(经过多次更新)的.keystore文件。如果我想更新,那我的用户会受到影响吗?

我知道用于签署密钥的密码(至少是其中三个之一),那么我可以创建另一个吗?肯定有办法解决这个问题...例如硬盘故障怎么办?


14
如果有方法可以绕过它,那将违背其所应起到的整个安全目的! - Santa
2
现在可以了。请查看此答案:Check this answer - Developer Vicky
12个回答

88
现在不用担心,这里是重置.JKS文件的完整步骤。
更新:根据Play控制台帮助页面这里所述,您现在应该先执行第3步(创建新的.jks文件,转换为.pem文件),然后再填写表格并附上upload_cert和.pem文件。这将使支持流程更加简单和快速。

I successfully rest my KEY

步骤一

从您的Google Play商店控制台下载上传证书(文件名为upload_cert.der

to download upload_cert.der file

第二步

点击这个链接 https://support.google.com/googleplay/android-developer/contact/key?hl=zh,用您有效的电子邮件地址填写申请表格,并上传文件(upload_cert.der)。

Fill the application form

第三步

现在您将收到来自支持团队的电子邮件,他们不需要您的 .JKS 文件,而是需要 .PEM 文件,以下是电子邮件示例。

enter image description here

第四步

要将.JKS文件转换为.PEM文件,您只需下载KeyStore Explorer JKS to PEM

回复邮件后,请等待48至72小时,您的密钥库文件将被重置。


10
如果某个应用程序没有启用Google Play应用程序登录,该怎么办? - Vipul Behl
2
在第三步中,我需要创建新的jks文件并将其转换为pem文件,然后将其作为回复邮件发送给他们吗?这个步骤正确吗? - giveJob
2
是的,您需要创建新的JSK文件并将其转换为PEM格式 @HemanthSP - Developer Vicky
1
是的,我做了,现在我的新密钥库可以上传了,我收到了谷歌确认邮件。 - giveJob
谢谢,伙计,它起作用了! 对于将来的任何人,请使用这个特定的密钥表单,而不是“其他错误”:https://support.google.com/googleplay/android-developer/contact/key?hl=en - Big_Chair
显示剩余2条评论

84

我曾遇到同样的问题。我试图使用删除文件恢复工具来还原,但失败了。因此,没有其他办法:你应该提交另一个申请。

通常,关于密钥库存在的唯一建议是:“始终备份!”


1
我曾经遇到过这个问题,不得不重新发布我的应用程序的新版本。从那时起,我的所有密钥都在Dropbox上。 - Varun
在升级到Android Studio 3.3之后,我的旧密钥库在签署应用程序时不再被接受。会显示“无法恢复密钥”的错误消息。 - Yar
每次 Android Studio 升级都会发生这种情况。我在从 4.0 升级到 4.1 的两次升级中都遇到了同样的问题。 - Toni Garabedyan

37
直到今天,如果你丢失了密钥,就无法使用新版本更新应用程序。在这种情况下,唯一的解决方案是发布一个新的应用程序,使用新的包名称和密钥,并要求所有用户安装它。
从今天开始,《Play控制台》中的应用签名密钥现在由Google Play安全管理,这意味着您只需负责管理上传密钥。如果您的上传密钥被破坏或丢失,Google的开发运营团队可以通过验证您的身份并重置您的上传密钥来提供帮助。Google仍将使用相同的应用程序签名密钥重新签名,使应用程序像往常一样更新。
对于现有的应用程序,需要将您的应用程序签名密钥转移到Google Play中。对于新应用程序,Google可以生成您的应用程序签名密钥。一旦注册了应用签名,您将使用上传密钥签署APK,Google将使用该密钥进行身份验证。然后他们将去掉那个签名并用应用程序签名密钥重新签名你的应用程序。
参考: Play控制台帮助>管理您的应用程序签名密钥

15

长期以来一直是可能的。

  1. 按照 Android Studio 帮助中心 中的说明生成新密钥。它必须与任何旧密钥不同。或者,您可以使用以下命令行生成新密钥:

keytool -genkeypair -alias newalias -keyalg RSA -keysize 2048 -validity 9125 -keystore nameofkeystore.jks

此密钥必须是2048位RSA密钥,并具有25年的有效期。

  1. 将该密钥的证书导出为PEM格式:

keytool -export -rfc -alias newalias -file upload_certificate.pem -keystore nameofkeystore.jks

然后上传此pem文件并填写表格并将其提交到此站点。之后,我们会向您发送一封电子邮件,告知我们已注册新的上传密钥。只接受来自 Play Console 账户所有者的密钥重置请求

一切都很好。您可以使用新的jks文件发布新版本的apk。


3
只有在启用了Google Play应用签名的情况下,此功能才能正常工作。 - Sumit
没有必要使用Google Play应用签名。至少我没有启用它。 - 6155031
这个有文档记录吗? - Sumit
1
这只适用于应用签名应用程序。我刚刚确认过。 - Euridice01
@6155031 你确定它不需要应用签名就能正常工作吗?(2021年夏季) - eyalix

11
如果你知道你的密钥库密码,你仍然没有相关的私钥来签署你的应用程序。你也没有机会生成与你的公钥相对应的相同的私钥。
因此:一定要备份你的密钥库文件。它与你的源代码一样重要。

2
所以,如果我理解正确的话,这个私钥是每个密钥库随机生成的,对吗?而我们唯一知道的是公钥,对吗? - iCantSeeSharp
如果您已经获得 keystore 的授权访问,您也可以导出私钥并将其导入到其他 keystore 或服务中。 - saxos
把你的密钥存储文件和密钥与代码仓库一起保存是理想的吗? - Neon Warge

5
如果您已经启用了Google Play应用签名,则不需要担心。
要检查是否已启用Google Play应用签名,请在Google Play控制台中转到“发布管理”->“应用签名”。
如果已启用,您可以通过填写支持表单与Google Play支持团队联系,或者您也可以选择在此处与支持人员进行实时聊天:https://support.google.com/googleplay/android-developer/answer/7218994?hl=en 解释您的问题,他们将告诉您下一步操作,其中包括创建一个新的2048位RSA密钥库,有效期为25年,并将密钥导出为PEM格式并通过电子邮件发送给他们。
要将密钥导出为PEM格式:
keytool -export -rfc -alias upload -file upload_certificate.pem -keystore keystore.jks

3

长时间以来,我一直在寻求解决方案,但到目前为止还没有成功。如果您有应用程序的最新版本apk,则可以使用jarsigner cmd命令从中检索证书。但是,您需要私钥才能更新。Google Play没有为此提供任何放宽条件。


4
你有关于如何做这件事的更多信息吗? - Zabs

1
我使用Android Studio生成了已签名的apk文件,所以在“密钥库路径”中,我只输入了一些没有扩展名的名称,并填写了此弹出窗口并对应用程序进行了签名。 enter image description here 下次发布应用程序时,我不记得它创建的路径和名称。
不知何故,我找到了默认位置,即“C:\ Program Files \ Java \ jdk1.8.0_45 \ jre \ bin”:\ jre \ bin,
并在该文件夹中按日期排序,然后尝试最近的文件,这对我有用。
注意:您应该记住密钥库密码和密钥密码。

1
现在可以实现了,在2017年5月之后,如果您丢失了密钥库或密钥库密码,您可以更新应用程序。您无法恢复丢失的密钥库,但是您可以在Play商店上替换密钥库。 点击这里 应用签名流程:

您可以在选择加入Google Play的应用签名之前或之后上传使用原始应用签名密钥签名的APK。

如果您开始使用Android App Bundles,您可以在生产中使用现有的APK,同时在测试轨道中测试它们。以下是该过程的工作方式:

  1. 签署您的应用程序包或APK并将其上传到Play控制台。
  2. 根据您上传的内容,签名过程如下所示:

    • 应用程序包:Google从您的应用程序包生成优化的APK,并使用应用程序签名密钥对其进行签名。
    • 使用上传密钥签名的APK:Google验证并从APK中删除您的签名,然后使用应用程序签名密钥重新签署APK。
    • 使用应用程序签名密钥签名的APK:Google验证签名。 Google向用户提供已签名的APK。

1

是的,您可以使用新密钥更新现有应用程序!

现在,Google允许您通过请求他们通过电子邮件/在线聊天重置密钥来上传新密钥到现有应用程序。

这个过程需要1-2个工作日。

我按照这个过程上传了一个带有新密钥的更新到同一应用程序。 Google Play Store技术团队帮助我重置了以前的密钥。


在请求重置密钥之前,您是否启用了Google Play应用签名来签署您的密钥? - eyalix

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接