【问题标题】:How to sign APK using keystore received from customer?如何使用从客户那里收到的密钥库对 APK 进行签名?
【发布时间】:2015-07-31 03:07:45
【问题描述】:

我从客户那里收到了一个密钥库文件,我应该用它来签署一个 APK,该 APK 将替换/更新 Play 商店中的现有 APK。

不幸的是,我收到以下错误:

jarsigner:找不到证书链:alias_name。 alias_name 必须引用包含私钥和相应公钥证书链的有效 KeyStore 密钥条目。

当我尝试使用不同的自行生成的密钥库对同一个 APK 进行签名时,效果很好,所以我认为密钥库中一定缺少某些东西。

Keystore-Typ: JKS
Keystore-Provider: SUN

Keystore enthält 1 Eintrag

Aliasname: alias_name
Erstellungsdatum: 19.05.2015
Eintragstyp: PrivateKeyEntry
Zertifikatskettenlänge: 1
Zertifikat[1]:
Eigentümer: (redacted)
Aussteller: (redacted)
Seriennummer: 5152a7xx
Gültig von: Wed Mar 27 09:00:32 CET 2013 bis: Sun Aug 12 10:00:32 CEST 2040
Zertifikat-Fingerprints:
     MD5:  (bla)
     SHA1: (bla)
     SHA256: (bla)
     Signaturalgorithmusname: SHA1withRSA
     Version: 3


*******************************************
*******************************************

当我将它与不同的密钥库文件进行比较时,我注意到缺少一个“扩展”。它是什么,我该如何解决这个问题?我从客户那里得到的文件不完整吗?

当我将 .p12 文件导入我的 Mac OS X 钥匙串时,我可以看到一个名为 alias_name 的私钥和一个证书;虽然没有“证书链”什么的。


我尝试了以下命令:

jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore data_dirs/ff.keystore /path/to/QtApp-release-unsigned.apk alias_name

jarsigner:找不到证书链:alias_name。 alias_name 必须引用包含私钥和相应公钥证书链的有效 KeyStore 密钥条目。

【问题讨论】:

  • 您执行了哪个命令来签署 APK? Android 签名密钥永远不会有证书链,因为它们是自签名的。
  • @Robert:更新问题

标签: android apk codesign jarsigner


【解决方案1】:

当您创建密钥库时,您还会在该密钥库中创建一个具有适当密码的别名。我假设“alias_name”不是该别名的名称。您需要向您的客户询问该名称和密码,以便使用该别名和密钥库对 apk 进行签名。

【讨论】:

  • 使用keytool -list可以看到别名是正确的。我感觉有些信息丢失了,但是我对android APK签名没有足够的了解。
  • 您可以尝试添加新的别名来查看文件是否损坏。
猜你喜欢
  • 2023-04-05
  • 1970-01-01
  • 2017-04-19
  • 1970-01-01
  • 2023-03-11
  • 2016-07-20
  • 2013-12-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多