什么是Android密钥库文件,它的用途是什么?


127

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

多个Android应用程序可以使用同一密钥存储库对其应用程序进行签名(“签名” .apk到底意味着什么吗?),这意味着什么(如果有)?


1
您似乎正在混淆两个主题。首先是密钥库,其次是APK签名。另请参阅Nikolay Elenkov的Android安全内部知识:Android安全体系结构深入指南
jww

Answers:


130

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

就您在Android上使用它所做的事情以及自提及提及apk以来可能要查找的内容而言,它就是您的证书。您正在使用您的凭据来标记您的应用程序。您可以使用同一密钥为多个应用程序添加商标,实际上,建议您使用一个证书为所编写的多个应用程序添加商标。轻松跟踪属于您的应用程序。

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

但是,除了对apk进行签名以发布到野外,您还可以使用它通过SSL(与Android相关)以及其他功能,通过SSL对服务器上的设备进行身份验证。


2
很好的答案。在此还应注意,如果要在应用程序中使用“推送数据”,则需要一个密钥库文件!
KapteinMarshall

密钥库计算机是否特定?或者我们可以在任何机器上使用它来更新我们的应用程序?
Yawar

7
很好的解释。您能否也解释一下为什么我们需要KeyStorePassword,Key别名,KeyPassword。拥有三个键似乎很多余。
ARK 2015年

18

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

从Android开发者网站的应用程序签名指南中:

通常,对于所有开发人员,建议的策略是在应用程序的预期寿命内,使用相同的证书对所有应用程序进行签名。您这样做有几个原因...

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


10

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

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


不,这是错误的。用于签名apk的密钥库可以不同,但​​是用于签名apk的密钥必须相同。密钥库文件只是一个用于存储密钥和证书信息的文件,同一密钥库文件中可以有多个密钥实体。
zeleven

0

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


您无需在仿真器中或在实际设备上签名应用程序即可对其进行调试。
马库斯(Marcus)

我并不是说您必须对其进行签名才能对其进行调试...但是您可以将keystore用作keytool的测试实现。
亚当·斯托姆

我认为keytool那不是你的意思。keytool是用于生成密钥库的Java程序。
Otra

是的,您是对的,keytool不是我的意思。我想“钥匙”就是我的意思。我只是想向询问者解释,您可以具有一个公共apk密钥进行调试,但是在发布时,每个apk将需要具有唯一的密钥才能进行编辑和升级。
亚当·斯托姆

尽管它们不需要唯一密钥...您可以使用一个私钥对多个apk进行签名,实际上最好这样做。您能想象为10个应用跟踪10种不同的证书/密钥吗?
Otra
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.