java-找不到证书链,但是密钥库包含私钥

我正在尝试对我的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时,它似乎包含私钥,所以我不明白这是怎么回事.是否缺少公钥?

解决方法:

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

由于字符代码错误,jarsigner不能将第一个参数“ -verbose”识别为jar文件的名称,而不能将其作为选项,而将“ -sigalg”识别为别名:

Usage: jarsigner [options] jar-file alias

这就解释了为什么错误消息中的别名是“¡sigalg”,而不是命令中的实际别名,并且为什么在开头包含一个反向的感叹号(该字符在另一个字符集中曾经是“-”).

上一篇:C#-以编程方式将证书添加到个人商店


下一篇:《More Effective C++》摘录