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