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

时间:2013-07-05 14:58:19

标签: java android security keystore android-keystore

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

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

假设密钥库本身和其中的私钥都有强密码。

2 个答案:

答案 0 :(得分:16)

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

  

假设密钥库本身和其中的私钥都有强密码

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

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

答案 1 :(得分:5)

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

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

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

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

将它放入存储库更容易:

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

很多人喜欢把它放在一张或多张SD卡上并放在某处。但是大多数人都没有一个叫做“#34;某个地方”的地方。在他们的办公室。几年后还可以阅读吗?

另外两个考虑因素:

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

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

  3. 所以我认为把它放在你的存储库中就好了。请注意保护您的Google帐户。对于此帐户,可以更改密码,可以激活双faktor,等等。