【问题标题】:How can I dump the signature of an Android App Bundle?如何转储 Android App Bundle 的签名?
【发布时间】:2020-01-22 10:11:50
【问题描述】:

我正在将我的 CI 流程从生成 APK 文件切换到 App Bundle。我的管道中的一个阶段将在生成签名的二进制文件后,转储签名并在 APK 上验证签名,以确保在继续之前正确签名。

> apksigner verify --print-certs my-signed-binary.apk

Signer #1 certificate DN: CN=<NAME>, OU=<GROUP>, O=<COMPANY>, L=<CITY>, ST=<STATE>, C=<COUNTRY>
Signer #1 certificate SHA-256 digest: <DIGEST1>
Signer #1 certificate SHA-1 digest: <DIGEST2>
Signer #1 certificate MD5 digest: <DIGEST3>

是否有一个等效的方法可以在生成整个 App Bundle 后转储签名?

我尝试使用 jarsigner,但最终输出了数百行。

> jarsigner -verbose -verify -certs my-signed-binary.aab

...

smk       12 Wed Dec 31 16:00:00 PST 1969 base/assets.pb

      >>> Signer
      X.509, CN=<NAME>, OU=<GROUP>, O=<ORGANIZATION>, L=<CITY>, ST=<STATE>, C=<COUNTRY> (myapp)
      [certificate is valid from 5/31/13 1:27 PM to 10/16/40 1:27 PM]

smk       85 Wed Dec 31 16:00:00 PST 1969 base/native.pb

      >>> Signer
      X.509, CN=<NAME>, OU=<GROUP>, O=<ORGANIZATION>, L=<CITY>, ST=<STATE>, C=<COUNTRY> (myapp)
      [certificate is valid from 5/31/13 1:27 PM to 10/16/40 1:27 PM]

smk   2075002 Wed Dec 31 16:00:00 PST 1969 base/resources.pb

      >>> Signer
      X.509, CN=<NAME>, OU=<GROUP>, O=<ORGANIZATION>, L=<CITY>, ST=<STATE>, C=<COUNTRY> (myapp)
      [certificate is valid from 5/31/13 1:27 PM to 10/16/40 1:27 PM]

      542451 Tue Jan 01 00:00:00 PST 1980 META-INF/MYAPP.SF
        1390 Tue Jan 01 00:00:00 PST 1980 META-INF/MYAPP.RSA
s k   542352 Tue Jan 01 00:00:00 PST 1980 META-INF/MANIFEST.MF

      >>> Signer
      X.509, CN=<NAME>, OU=<GROUP>, O=<ORGANIZATION>, L=<CITY>, ST=<STATE>, C=<COUNTRY> (myapp)
      [certificate is valid from 5/31/13 1:27 PM to 10/16/40 1:27 PM]


  s = signature was verified
  m = entry is listed in manifest
  k = at least one certificate was found in keystore
  i = at least one certificate was found in identity scope

- Signed by "CN=<NAME>, OU=<GROUP>, O=<ORGANIZATION>, L=<CITY>, ST=<STATE>, C=<COUNTRY>"
    Digest algorithm: SHA-256
    Signature algorithm: SHA256withRSA, 2048-bit key

jar verified.

最后一部分(“签名者...”)是整个 App Bundle 的签名吗?有没有比使用 sed 破解此输出更简单的方法来获取 App Bundle 的签名?

【问题讨论】:

  • 这确实是个好问题。你有同样的发现吗?

标签: jarsigner android-app-bundle


【解决方案1】:

我使用了 keytool,我认为它产生了正确的结果

keytool -printcert -jarfile my-signed-binary.aab

【讨论】:

  • 我正要评论 keytooljarsigner 都只能检查方案 v1 签名(JAR 签名),而 apksigner 也检查 v2、v3 和 v4(但它没有'不理解 AAB 文件)。但显然 AAB 只使用 JAR 签名,因此检查就足够了:stackoverflow.com/a/69507544
猜你喜欢
  • 2022-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-07-13
  • 1970-01-01
  • 2021-04-15
  • 2018-11-06
  • 1970-01-01
  • 2019-03-01
相关资源
最近更新 更多