【问题标题】:What is Android keystore file, and what is it used for?什么是 Android 密钥库文件,它的用途是什么?
【发布时间】:2011-10-14 12:59:14
【问题描述】:

这是一个普遍的问题,但我对它在 Android 上的使用特别感兴趣。什么是密钥库文件,它的用途是什么?

多个 Android 应用程序能否使用同一个密钥库来签署他们的应用程序(“签署”一个 .apk 究竟是什么意思?),这意味着什么(如果有的话)?

【问题讨论】:

标签: android keystore


【解决方案1】:

keytool 的整个想法是使用唯一标识符对您的 apk 进行签名,该标识符指示该 apk 的来源。密钥库文件(据我了解)用于调试,因此您的 apk 具有 keytool 的功能,而无需签署您的 apk 以进行生产。所以是的,出于调试目的,您应该能够使用单个密钥库签署多个 apk。但请理解,在推送到生产环境时,您需要唯一的 keytools 作为您创建的每个 apk 的标识符。

【讨论】:

  • 您无需签署应用程序即可对其进行调试,无论是在模拟器中还是在实际设备上。
  • 我不是说你必须签署它才能调试它......但你可以使用 keystore 作为你的 keytool 的测试实现。
  • 我不认为keytool 是你的意思。 keytool 是一个用于生成密钥库的 java 程序。
  • 是的,你是对的,keytool 不是我的意思。我想“钥匙”就是我的意思。我只是想向提问者解释你可以有一个公用的 apk 密钥来进行调试,但是在发布时,每个 apk 都需要有唯一的密钥来编辑和升级。
  • 虽然它们不需要唯一的密钥...您可以用一个私钥签署多个 apk,实际上最好这样做。您能想象为 10 个应用程序跟踪 10 个不同的证书/密钥吗?
【解决方案2】:

您可以在此处的 Android 官方文档中找到有关签名过程的更多信息:http://developer.android.com/guide/publishing/app-signing.html

是的,您可以使用同一个密钥库签署多个应用程序。但是您必须记住一件重要的事情:如果您在 Play 商店上发布应用程序,则必须使用非调试证书对其进行签名。如果有一天你想发布这个应用程序的更新,用于签署 apk 的密钥库必须相同。否则,您将无法发布更新。

【讨论】:

  • 不,这是错误的。您用于签署 apk 的密钥库可能不同,但您用于签署 apk 的密钥必须相同。 keystore 文件只是一个用于存储密钥和证书信息的文件,您可以在同一个 keystore 文件中拥有多个密钥实体。
【解决方案3】:

Android 电子市场要求您使用公钥/私钥机制为您发布的所有应用程序签名(证书使用您的私钥签名)。这提供了一层安全保护,可防止远程攻击者将恶意更新推送到您的应用程序推向市场(所有更新必须使用相同的密钥进行签名)。

来自 Android 开发者网站的App-Signing Guide

一般来说,向所有开发人员推荐的策略是在应用程序的整个预期生命周期内使用相同的证书对所有应用程序进行签名。您应该这样做有几个原因...

使用相同的密钥有几个好处 - 一个是使用相同密钥签名的应用程序之间更容易共享数据。另一个是它允许使用相同密钥签名的多个应用程序在同一进程中运行,因此开发人员可以构建更多“模块化”应用程序。

【讨论】:

  • 提示:另一种选择:如果它们是完全不相关的应用程序,我建议使用不同的密钥库。如果您最终出售其中一个应用程序,您可以在不损害其他应用程序安全性的情况下赠送相应的密钥库。
【解决方案4】:

我将提供的答案是,密钥库文件用于向任何询问的人验证您自己的身份。它不仅限于签署 .apk 文件,您还可以使用它来存储个人证书、签署要传输的数据以及各种身份验证。

就您在 Android 上使用它所做的事情以及您提到签署 apk 后可能正在寻找的内容而言,它就是您的证书。您正在使用您的凭据为您的应用程序打上烙印。您可以使用相同的密钥标记多个应用程序,实际上,建议您使用一个证书标记您编写的多个应用程序。更容易跟踪属于您的应用程序。

我不确定你所说的含义是什么意思。我想这意味着除了您的证书持有者之外,没有人可以更新您的申请。这意味着,如果您将其发布到野外,丢失您用于签署应用程序的证书,那么您将无法发布更新,因此请保持该证书的安全并在需要时进行备份。

但除了签署 apk 以发布到野外之外,如果您愿意,您还可以使用它通过 SSL 向服务器验证您的设备(也与 Android 相关)以及其他功能。

【讨论】:

  • 很好的答案。此处还应注意,如果您要在应用中使用“推送数据”,则需要一个密钥库文件!
  • Keystore 机器是特定的吗?或者我们可以在任何机器上使用它来更新我们的应用程序??
  • 很好的解释。您能否解释一下为什么我们需要 KeyStorePassword、Key alias、KeyPassword。拥有三个键似乎是多余的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-05-19
  • 1970-01-01
  • 2019-07-31
  • 2010-09-27
  • 2011-12-17
  • 2010-11-21
相关资源
最近更新 更多