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

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

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

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


答案 1

对 Git 存储库具有读取访问权限的任何人都将获得私钥。这被视为安全问题,因此不建议这样做。如果你的GIT存储库是完全私有的,这意味着除了你之外没有人可以访问它(不是GitHub上的私有存储库,而是本地磁盘或你控制的基础设施中的git存储库,100%),那么把你的私钥放在那里就像你的本地基础设施一样安全。

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

请注意,密码是您在(“公共”)私钥的情况下的最后一种防御方式。如果它以任何方式受到损害(猜测,被盗,破解),那么它就结束了。

此外,我非常确定并非所有(如果有的话)开发人员都需要访问发布密钥。如果您需要他们拥有它,请使用存储库以外的其他渠道(即GPG加密邮件等)将其交给它。但我首先会重新考虑您的安全策略。


答案 2

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

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

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

如果您的Google Play Dev Console帐户是安全的,那么您应该没问题。但这取决于你的szenario。

将其放入存储库要容易得多:

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

许多人更喜欢把它放在一个或多个SD卡上,然后把它放在某个地方。但大多数人的办公室里没有一个叫做“某处”的地方。几年后还能读懂吗?

另外两个考虑因素:

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

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

所以我认为把它放在你的存储库中是可以的。请务必保护您的 Google 帐号。对于此帐户,可以更改密码,可以激活双法克托等等。