这是一个普遍的问题,但我特别感兴趣的是它用于Android。什么是密钥库文件,它用于什么?
多个Android应用程序可以使用相同的密钥库来签署他们的应用程序(“签署”.apk究竟是什么意思?),这有什么影响(如果有的话)?
答案 0 :(得分:121)
我要提供的答案是密钥库文件是向任何正在询问的人验证自己。它不仅限于签署.apk文件,您可以使用它来存储个人证书,签署要传输的数据以及各种身份验证。
就您使用Android操作而言,可能因为您提到签名apk,您可能正在寻找它,这是您的证书。您使用凭据为您的应用程序打造品牌。您可以使用相同的密钥标记多个应用程序,事实上,建议您使用一个证书来标记您编写的多个应用程序。更容易跟踪哪些应用程序属于您。
我不确定你的含义是什么意思。我想这意味着除了证书持有者之外,没有人可以更新您的申请。这意味着如果您将其释放到野外,丢失用于签署应用程序的证书,则无法发布更新,因此请保持该证书安全并在必要时进行备份。
但是,除了签署apks以进入野外之外,如果您愿意,可以使用它来通过SSL向服务器验证您的设备(与Android相关)以及其他功能。
答案 1 :(得分:17)
Android Market要求您使用公钥/私钥机制签署您使用证书发布的所有应用(证书使用您的私钥签名)。这提供了一层安全性,可防止远程攻击者将应用程序的恶意更新推向市场(所有更新必须使用相同的密钥签名)。
来自Android开发者网站的App-Signing Guide:
通常,针对所有开发人员的建议策略是在应用程序的预期生命周期内使用相同的证书对所有应用程序进行签名。你应该这样做的原因有几个......
使用相同的密钥有一些好处 - 一个是在使用相同密钥签名的应用程序之间共享数据更容易。另一个原因是它允许使用相同密钥签名的多个应用程序在同一进程中运行,因此开发人员可以构建更多“模块化”应用程序。
答案 2 :(得分:10)
您可以在此处的官方Android文档中找到有关签名过程的更多信息:http://developer.android.com/guide/publishing/app-signing.html
是的,您可以使用相同的密钥库签署多个应用程序。但您必须记住一件重要的事情:如果您在Play商店发布应用程序,则必须使用非调试证书对其进行签名。如果有一天你想发布这个应用程序的更新,用于签署apk的密钥库必须是相同的。否则,您将无法发布更新。
答案 3 :(得分:-1)
keytool的整个想法是用一个唯一的标识符来标记你的apk,该标识符指示该apk的来源。一个密钥库文件(据我所知)用于debuging所以你的apk具有keytool的功能,而无需签署你的apk生产。所以,是的,出于调试目的,您应该能够使用单个密钥库对多个apk进行签名。但要明白,在推向生产时,您需要使用唯一的keytools作为您创建的每个apk的标识符。