【问题标题】:How to view the identity of person who signed the apk on Android device?如何在 Android 设备上查看签署 apk 的人的身份?
【发布时间】:2011-05-18 11:17:00
【问题描述】:

我需要查看谁签署了我已安装到我的设备上的应用程序。这通常可以在设备上还是在 PC 上进行?

【问题讨论】:

  • 嗯,不是每个应用程序都有关于页面,对吧?此外,作为应用程序的开发者,我可能会在关于页面上写任何内容,这可能与我用于签署应用程序的证书中的信息不匹配...
  • 在 Android 上,您可以使用 PackageManager 枚举所有应用程序并获取 X509 签名证书,请参阅 [link] stackoverflow.com/a/16305427/2225646。 Google Play 中还有一款免费应用:Indenile Signature。

标签: android certificate signature apk


【解决方案1】:

(假设您可以获得对原始 apk 文件的访问权限 - 如果您知道或对其名称和位置做出有根据的猜测,您通常可以访问,即使您无法在非 -根电话)

您可以将 apk 作为 zip 文件打开并从 META-INF/CERT.RSA 的二进制内容中过滤 ascii 文本

或使用实际工具,

jarsigner -verify -certs -verbose some_application.apk

当然,验证签名者是他们声称的身份的唯一方法是通过直接或经过验证的方式从该方获取使用相同密钥签名的其他内容,并比较签名密钥指纹 - 这就是 Android 本身验证的方式应用升级和应用 ID 共享与他们针对的现有 APK 来自同一方。

【讨论】:

  • 感谢您的提示!也许您也知道如何仅使用设备来实现相同的目标?我的身份可能对我的应用程序的最终用户很重要,但他们通常懒得在 PC 上执行操作....
  • 如果 jarsigner 是在 java 中实现的,我不会感到惊讶,所以你可以将它移植到 android。但是,通过过滤掉不可打印的内容来提取 ascii 文本的第一个建议可能更简单。但是,如果这是您的应用程序,那有什么意义呢?如果用户信任您的代码来提取签名者信息,那么他们可能也会信任您的关于屏幕。另请注意,提取签名者信息并不能证明该实体确实对其进行了签名,您必须证明使用的证书确实是他们的。
  • 在 Google 发布的 apk 上运行 jarsigner(显然)会给出(很多)这些消息:X.509, CN=Android, OU=Android, O=Google Inc., L=Mountain View, ST=California, C=US [certificate is valid from 22-08-08 01:13 to 08-01-36 00:13] [CertPath not validated: Path does not chain with any of the trust anchors]。我如何获得 Google 证书以验证他们确实是签名者。 (我认为添加到此回复中是相关的,但如果您希望我发布一个单独的问题,请告诉我。)
【解决方案2】:

来自Getting certificate details from an apk,可以使用以下命令

openssl pkcs7 -inform DER -in CERT.RSA -noout -print_certs -text

【讨论】:

    猜你喜欢
    • 2011-12-07
    • 2017-04-13
    • 2015-09-06
    • 2012-12-10
    • 1970-01-01
    • 1970-01-01
    • 2014-11-18
    • 2011-11-23
    • 1970-01-01
    相关资源
    最近更新 更多