有什么理由我不应该将我的密钥库存储在版本控制中吗?

ZoF*_*reX 34 java security android keystore android-keystore

我正在使用密钥库(.jks)来存储我用来签署我的Android应用程序的证书.Android文档和社区给我留下了深刻印象,从不丢失这个文件的重要性,但我没有找到任何关于我应该保留它的指导.

将它存储在Git中是一个糟糕的想法(即它会产生安全后果)吗?

假设密钥库本身和它们内部的私钥都有强密码.

Mar*_*ski 17

任何对您的Git仓库具有读取权限的人都将获得私钥.这被认为是一个安全问题,因此不建议这样做.如果您的GIT仓库是完全私有的,意味着没有人可以访问它(不是私人仓库,即GitHub,而是本地磁盘或您在100%控制的基础设施中的git仓库)然后将您的私钥放在那里将其保存在本地磁盘上是安全的.

假设密钥库本身和它们内部的私钥都有强密码

请注意,如果您的("公共")私钥,密码是您的最后一道防线.如果它会以任何方式受到损害(猜测,被盗,破裂),那么它就结束了.

此外,我更确定并非所有(如果有的话)开发人员都需要访问释放密钥.如果您需要它们,请将其从回购中移除.但我首先要重新考虑安全政策.

  • @ZoFreX - 为什么要依靠密码来保护密钥?它可能比关键本身更容易猜到.并且**任何有权访问您的仓库和由您签名的二进制文件的人都可以无限次地尝试猜测**,以及他们关心购买的AWS实例的快速集合.即使您的仓库今天是私人的,在某些时候您可能会共享它或将其存储在异地,并忘记这种风险. (3认同)

Jan*_*ing 5

要更新您的应用程序,您需要两件事:

  • 访问拥有该应用程序的Google Play Developer控制台.
  • 使用正确的密钥库签名的APK

通过将证书放入存储库并与开发人员共享,您将放弃一个安全令牌.

如果您的Google Play开发者控制台帐户是安全的,那么您应该没问题.但这取决于你的szenario.

将它放入存储库更容易:

  • 您的存储库克隆在许多地方,并且通常会正确备份.
  • 您的开发人员团队可以使用gradle自动签署您的生产版本.

很多人喜欢把它放在一张或多张SD卡上并放在某处.但大多数人的办公室里没有一个叫"某个地方"的地方.几年后还可以阅读吗?

还有两点考虑:

  1. 如果Android应用程序的产品所有者在您的公司中发生变化,您将永远不知道旧所有者是否仍有副本,并且没有人知道谁已经访问过它.你不能改变密钥.因此,如果密钥曾经从一个人传递到另一个人,那么必须假设它不安全.

  2. 当然,你可以完全保密.它由您的密码保护,没有人知道.但是如果你死了怎么办?有人可能想要更新您的应用.这不可能.当你死的时候,保密的私钥会丢失.

所以我认为把它放在你的存储库中是好的.请注意保护您的Google帐户.对于此帐户,可以更改密码,可以激活两个faktor,依此类推.