【问题标题】:Why does Android allow an APK with an expired certificate to be installed?为什么 Android 允许安装证书过期的 APK?
【发布时间】:2011-08-03 07:17:15
【问题描述】:

我制作了一个使用有效期为 1 天的证书签名的 APK。我的目标是向某些人提供试用应用程序,但防止他们在过期日期后复制应用程序。如果他们在到期日期之前复制应用程序,那没关系。我认为 Android 操作系统会阻止任何证书过期的应用程序安装在手机上。但是,我发现我可以在签名证书到期 2 天后在手机上安装该应用程序。 Jarsigner 确认证书已过期。为什么 Android 允许使用过期证书安装应用程序?

【问题讨论】:

  • 这很有趣。但通常人们会进行限时试验,但将代码放入应用程序以使其在给定日期之后拒绝运行,而不是希望操作系统在该日期之后拒绝安装它。您是否特别想限制安装日期而不是运行日期?如果是这样,您可以在到期前安装时在私人设置和/或 sdcard 中创建授权记录 - 每个都有不同的可清除/重新安装生存问题。
  • 是的,我不想限制运行日期,该应用程序应该对我提供给它的人完全可用,但不应重新安装。我很困惑,因为 Android 指南告诉系统在安装时测试证书的到期日期,但似乎并非如此。也许我可以按照您的建议自己完成这项工作,但我想知道为什么不检查证书。
  • 你很可能已经发现了一个错误(或者在测试中有一些微妙的错误)。但是为了实现你的目标,依靠你自己实现的东西可能会更有效。 (可能缓存的)运行授权方案也不需要依赖于日期 - 它可以与您在某处服务器上创建的用户帐户相关联。顺便说一句,请注意,即使您的原始方案有效,也会因重新签署 apk 而被轻易击败。
  • 只是为了检查——您正在使用内置发布模式的应用程序进行测试,不是吗?而且你没有用adb push把apk推送到你的手机上?
  • 重新签名并不是特别困难,您只需要熟悉命令行工具即可。从根本上说,由于证书是自行生成的,因此手机看不到您的与其他人相比有什么特别之处 - 它只能强制要求声称由同一实体签名的两件事是,以便更新或共享用户 ID 方案(包括系统应用程序)可以通过与现有已安装部分的一致性进行审查。

标签: android certificate apk demo trial


【解决方案1】:

我了解开发人员允许通过 adb 或 30-party 安装它。我相信如果你将它上传到市场你会发现困难。恕我直言,这是合乎逻辑的,因为当您在 Market 之外安装应用程序时,您会承担许多使用右签名应用程序无法解决的风险。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-11-03
    • 1970-01-01
    • 2016-01-18
    • 2016-05-31
    • 2017-09-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多