【问题标题】:When is LICENSED_OLD_KEY returned from server?什么时候从服务器返回 LICENSED_OLD_KEY?
【发布时间】:2011-09-28 05:50:59
【问题描述】:

documentation for application licensingLICENSED_OLD_KEY 描述为含义:

应用程序已授权给用户,但有可用的更新应用程序版本使用不同的密钥签名。

另一方面,documentation for signing strategies 说:

如果您在不使用匹配证书的情况下签署新版本,您还需要为应用程序分配不同的包名称 - 在这种情况下,用户将新版本安装为全新的应用程序。

由于应用程序由其包名称标识,这似乎表明您无法更改已发布应用程序的签名密钥。 (相反,您可以更改密钥和包,但它会被市场视为新应用程序。)

我想不出有可能收到LICENSED_OLD_KEY 响应的场景。我错过了什么吗?

【问题讨论】:

    标签: google-play code-signing license-key android-lvl


    【解决方案1】:

    documentation 声明 LICENSED_OLD_KEY

    ...可以表明已安装的应用程序版本使用的密钥对无效或被盗用。

    看起来此代码是针对私钥泄露或不再受信任的情况添加的。由于当前的 IPC 机制甚至不知道客户端使用了哪个公钥,我猜想整个包名都会被污染。这个想法是,在这种情况下,应用程序应该要求用户升级到没有被污染并且应该已经存在的新版本。由于此升级需要切换到全新的不同软件包,因此不清楚应该如何完成。我的猜测是这个机制在这一点上根本没有真正使用,所以得到这个代码的机会非常接近于零。在当前版本的官方 LVL 库中,此代码的处理方式与正常的 LICENSED 响应相同。

    附言另请注意,您混淆了用于签署应用程序的密钥对和用于 LVL 服务的密钥对。这两者是完全不同的,不相关的。有趣的是,使用后一个密钥对,您甚至根本不知道私钥。您可以从发布者控制台获得自己的预生成公钥(每个开发者一个),这就是您所获得的全部内容。

    【讨论】:

    • 我明白你在说什么。但如果你是对的,那么文档是(慷慨的)误导性的。我不是将用于签署应用程序的密钥对与用于 LVL 服务的密钥对混淆的人:文档似乎清楚地说 LICENSED_OLD_KEY 与应用程序的签名方式有关,而不是 LVL 事务的加密方式。 (如果 LVL 密钥被泄露,大概可以发布使用新 LVL 密钥对的应用程序的新版本,而无需更改应用程序的签名方式。)
    • Ted,你能发布一个链接到文档中这样说的部分吗?我非常怀疑 Market 组件在执行 LVL 时甚至会查看应用程序的证书 - 至少我可以使用标准调试证书和市场上使用的真实证书进行检查。
    • FWIW,是的,这些文档具有误导性——否则这个话题就不会存在。
    • 我认为我的帖子中引用的第一个文本是说:“有一个更新的应用程序版本可用,它使用不同的密钥签名。”
    猜你喜欢
    • 1970-01-01
    • 2012-02-24
    • 2014-10-25
    • 1970-01-01
    • 2014-11-04
    • 1970-01-01
    • 1970-01-01
    • 2021-10-11
    相关资源
    最近更新 更多