我最近接到了一项任务来设计/实现/维护一个 Android APK 签名服务器。我过去从未这样做过,并且可能会在 Rails 中这样做(我的组织是 Rails 商店)。
此签名服务器基本上采用构建提供的 APK,并使用受保护且安全的证书对其进行签名。并且此签名服务器不应允许任何外部访问,除非仅限于特定 IP 地址。
我没有任何编写签名服务器的经验。做过这件事的人会分享他们的经验和一些关于如何设计它的设计模式,所以它是安全的和受保护的?
我最近接到了一项任务来设计/实现/维护一个 Android APK 签名服务器。我过去从未这样做过,并且可能会在 Rails 中这样做(我的组织是 Rails 商店)。
此签名服务器基本上采用构建提供的 APK,并使用受保护且安全的证书对其进行签名。并且此签名服务器不应允许任何外部访问,除非仅限于特定 IP 地址。
我没有任何编写签名服务器的经验。做过这件事的人会分享他们的经验和一些关于如何设计它的设计模式,所以它是安全的和受保护的?
仅通过 IP 进行限制肯定是不够的,至少使用某种形式的用户名/密码身份验证并保留审核日志,这样您就知道谁签署了什么以及何时签署。如果您在 vanilla Ruby 中执行此操作,则将 APK 保存到文件并jarsigner
作为 shell 命令调用可能是最简单的方法。如果您使用的是 JRuby,则可以使用 Java API 进行实际签名。
你还需要确保至少只有你的 webapp 可以读取签名密钥。如果您有很多键,您需要让用户选择使用哪个键或根据组等给他们一个键(一个用于游戏部门,一个用于音乐应用程序部门,等等)。您可能还需要考虑将密钥存储在 HSM 或智能卡中,以确保无法从服务器中提取它们。尽管如此,如果有人破解它,他们将能够签署应用程序,但不能窃取实际密钥(无法撤销)。
签署 APK 的过程并不复杂。然而; 服务器的安全性将是 yoru 任务中最困难的部分。简而言之,您应该在您的服务器或某处拥有凭据,以便您可以签署 apk(理想情况下这是安全的)。
学习这个过程的好地方是:http: //developer.android.com/tools/building/index.html