我可以将android的release.keystore文件存储在assets文件夹中吗?

时间:2016-01-27 02:59:26

标签: android android-keystore android-security

在android开发者页面(http://developer.android.com/tools/publishing/app-signing.html#secure-key)中,它声明:

  

将包含私钥的密钥库文件保存在安全可靠的位置   的地方。

这是否意味着我们应该将release.keystore文件保存在我们本地计算机上的某个位置(不在应用程序内)?

或者我可以将它保存在src/main/assets文件夹中,因为密钥库受密码保护吗?但另一方面,keyPasswordstorePassword存储在build.gradle文件中,因此将release.keystore文件存储在src/main/assets中并不是一个好主意?什么是最安全的方法?

3 个答案:

答案 0 :(得分:4)

您应该将release.keystore某些位置保护在应用程序之外,例如本地计算机。

如果您希望将来更新您的应用程序,只有使用相同的密钥签名才能更新您的应用程序。

例如,如果您将其放入应用程序并且有人接管它,那么他们将能够通过使用密钥签名来发布您的应用程序。

编辑:关于保护密钥的官方Android建议

  

您作为开发者实体的声誉取决于您的安全保障   私钥在任何时候都是正确的,直到密钥过期。这是   保证密钥安全的一些提示:

     
      
  • 为密钥库和密钥选择强密码。
  •   
  • 不要向任何人提供或借出您的私钥,也不要让未经授权的人知道您的密钥库和密钥密码。
  •   
  • 将包含私钥的密钥库文件保存在安全可靠的位置。
  •   

答案 1 :(得分:2)

不,永远不要以任何方式或形式共享您的密钥库。

您的密钥库不需要,也不应该在您的应用资产中。

您只需签署发布版本即可。没有其他人应该拥有它或知道它的密码。

您需要密钥库来证明应用程序是由您真正制作的。这也是您必须使用相同的密钥库签署应用程序才能发布更新的原因。只有您应该能够发布更新,并通过使用密钥库对应用程序进行签名来证明它。

如果你分发你的密钥库,你只是让某人猜测或暴力破解你的密钥库密码,然后用它来签署应用程序。换句话说,他可以假装他是你

你不会找到任何关于此的大量文档,因为这应该是常识。这是一种技术,使您可以安全地在互联网上支付某些费用或发送签名的电子邮件:公钥加密。

事实上,我很困惑你想要分享你的密钥库,我可以假设你不知道它是什么或它做了什么。这就是我尝试至少解释上述基础知识的原因。

作为旁注,我不得不提到任何人都可以从appstore下载你的应用程序并查看你的源代码,资源或资产 - 基本上不需要技术知识。
如果你把你的密钥库放到你的资产中,那么就把它与你的apk一起发送,对于任何有恶意的人来说,这只是一个圣诞节。这几乎就像把房子的钥匙交给那些想要抢劫你的窃贼。

答案 2 :(得分:0)

最好复制它并将其存储在本地计算机/您的在线存储库/谷歌驱动器上。如果丢失了,您将无法将更新发布到同一个应用程序。