证书链未找到,但密钥库包含私钥。

3

我正在尝试签署我的apk文件,以便使用以下命令发布我的应用程序更新:jarsigner ­-verbose -sigalg SHA1withRSA -­digestalg SHA1 ­-keystore my­release-key.keystore CordovaApp­release­unsigned.apk alias_name但遇到了以下错误:

jarsigner: Certificate chain not found for: ¡sigalg.  ¡sigalg must reference a valid KeyStore key entry containing a private key and corresponding public key certificate chain.

我刚刚换了一台新电脑,所以我把我的.keystore文件复制到了它上面。当我执行keytool -list -v时,看起来它包含了私钥,所以我不明白问题出在哪里。是公钥丢失了吗? 输入图像描述


显然,你最初没有正确输入命令。否则为什么 isigalg. 会被视为别名? - user207421
看看我的新答案,可能是这种情况吗? - tobbe
负号去哪里并不重要。事实是,你得到的响应表明命令行存在问题; 从你发布的内容中缺失了它们; 而根据@Omikron的答案所述,它们是必需的。 - user207421
1个回答

4
显然这是一个编码问题。该命令包含的字符看起来很像减号(ASCII码0x2D),但实际上是许多破折号或连字符中的一个(http://en.wikipedia.org/wiki/Dash)。
由于错误的字符代码,第一个参数“-verbose”被jarsigner识别为文件名而不是选项,而“-sigalg”则被识别为别名。
Usage: jarsigner [options] jar-file alias

这就解释了为什么错误信息中的别名是"¡sigalg"而不是实际命令中的别名,并且以倒置的感叹号开头(在另一种字符集中,这曾经是"-")。


谢谢!但是减号只在stackoverflow上消失了,原因不明 :/ - tobbe

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接