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

时间:2014-12-18 09:55:49

标签: java android certificate keytool jarsigner

我试图签署我的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时,它似乎包含私钥,所以我不明白什么是错的。公钥是否丢失? enter image description here

1 个答案:

答案 0 :(得分:4)

显然这是一个编码问题。该命令包含类似于减号(ASCII代码0x2D)的字符,但实际上是多个破折号或连字符(http://en.wikipedia.org/wiki/Dash)之一。

由于错误的字符代码,第一个参数" -verbose"被jarsigner认为不是一个选项,而是作为jar文件的名称和" -sigalg"被认为是别名:

Usage: jarsigner [options] jar-file alias

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