2013-05-07 36 views
11

我读了this article关于签署您的Android应用程序。我用Eclipse导出我的Android应用程序,必须创建一个密钥库(成功)和一个带有别名的私钥(它也成功了)。所以我知道我必须用私钥签署应用程序。什么是Android中的私钥?

不过,文章不作以下问题说清楚什么:

  • 什么是私有密钥?
  • 您应该制作的每个应用程序是否有另一个密钥或应该共享相同的私钥?
  • 什么是别名?
  • 为什么这些应用程序具有有效期限?
+1

@downvoter:请留下评论来解释downvote。 – 2013-05-07 19:01:03

+1

不是我的失望,但你应该在[Wikipedia](https://en.wikipedia.org/wiki/Public-key_cryptography)上获得关于公钥/私钥的大量信息。 – nkr 2013-05-07 19:03:22

+3

我认为这是一个有效的问题,他没有要求获得关于pub/private认证的技术信息,以至于在android上下文中的实际含义。 – 2013-05-07 19:05:07

回答

10

私钥是验证您是应用程序所有者的加密工具。任何正在更新到Google Play商店的内部版本都必须使用您的私钥进行签名,以证明它是合法版本。

因此,要上传到商店的每个不同的应用程序都应该有自己的专用密钥。 如果您失去此密钥,您将无法上传应用的任何新版本,,因此请确保将其存储在安全的地方并进行备份!

但是,为了方便起见,您可以将多个私钥存储在同一个密钥存储区中。 (尽管我不这样做,但我发现为每个项目都设置不同的密钥库会更方便。)

别名只是一个简单易读的密钥名称。没有更多或更少。

值得注意的是,当您执行Eclipse的“运行”时,它会使用称为调试键的东西来运行应用程序。这可以正常工作,因为您并未尝试将此构建版上传到商店,但这就是为什么您需要使用单独的构建流程来构建您的应用程序以进行部署。

生命有效期是技术要求。只需在未来设置它,不用担心。

+0

嘿,那么只是为了澄清一下我发布的每个应用程序都有一个关键存储区和一个专用密钥?例如。一个私人密钥为应用程序A和另一个私人密钥为应用程序B.如果我想发布应用程序B的更新我使用应用程序B的私钥而不是应用程序A?谢谢你阅读和写这个答案 – user3364963 2014-10-29 22:38:10

+1

是的,你应该有一个私人密钥为每个应用程序。我还建议为每个应用程序分别设置一个密钥存储区,这样,如果您想让某人只访问您的一个私人密钥,则可以轻松完成。但是你可以*在同一个密钥库中有两个私钥。 – 2014-10-29 22:44:12

1

签名就像您的Android应用程序的证书(认为Web证书有一些想法) - 它证明您是该应用程序的所有者。每个应用都必须签名,因为您提供的链接清楚地表明了这一点。

从理论上讲,从一个开发者每个应用程序应该是相同的签名下(毕竟,这是>你的<签名,而不是应用程序的)

别名就是:你的关键,一个别名,你用于在签署应用程序时引用密钥库。

关于寿命,并非所有事情都会持续下去。那些签名(或者证书,如果你愿意的话)可以持续25年以上。不是你必须担心的事情。