Jarsigner:找不到证书链

时间:2010-07-15 13:17:42

标签: java keytool jarsigner

我已将证书导入私有~/.keystore文件:

keytool -list
Enter keystore password:

Keystore type: JKS
Keystore provider: SUN

Your keystore contains 1 entry

mylyn-mantis, Jul 15, 2010, trustedCertEntry

我正试图用它签一个罐子,但是我找到了'找不到证书链'的错误。

jarsigner -verbose  /home/robert/file.jar mylyn-mantis
jarsigner: Certificate chain not found for: mylyn-mantis.  mylyn-mantis must reference a valid KeyStore key entry containing a private key and corresponding public key certificate chain.

我该如何解决这个问题?

4 个答案:

答案 0 :(得分:14)

您的密钥库似乎只包含一个证书(公钥),您需要一个完整的密钥条目,一个私钥,以及整个证书链,以便能够签署任何内容

答案 1 :(得分:1)

我遇到了这个错误,但这是一个不同的问题。当您将CSR发送给CA时,它来自具有您生成的特定别名的特定私钥。当您再次收到证书时,您 必须使用相同的别名导入该证书 ,否则这两个证书将不会连接在一起。

如果操作正确,当您使用keytool -list -v时,您将看到一个别名类型为

的条目。
Entry type: PrivateKeyEntry
Certificate chain length: 3

用于输入。 如果做错了,您将有两个条目

Entry type: PrivateKeyEntry
Certificate chain length: 1

Entry type: trustedCertEntry

答案 2 :(得分:1)

简答

使用您的别名密钥而不是这样的密钥库:

jarsigner -verbose -keystore [Your signature storage path] -signedjar [signed filename] [unsigned filename] [Your alias key]

更多详情

以下是解决此错误的最简单方法:

  1. 转到 bin 文件夹 .. 它可能在此路径中:
<块引用>

C:\Users[您的计算机名]\jdk\bin

或此路径:

<块引用>

C:\Program Files\Java\jre1.8.0_77\bin

  1. 为防止环境变量的配置引起的问题,请将要签名的空包您的密钥库 [私钥用于签名]到JDK下的bin目录

  2. 通过运行以下命令获取别名密钥:

    keytool -keystore [your key store] -list -v

  3. 最后运行这个命令:

    jarsigner -verbose -keystore [Your signature storage path] -signedjar [signed filename] [unsigned filename] [Your alias key]

答案 3 :(得分:0)

我遇到了同样的问题。我有CA发行的.p12文件,并且我正在尝试签名jar文件。但是我遇到了错误:

jarsigner: Certificate chain not found for:

基本上,我是从控制台复制别名。错误的字符“问号”(?)导致了此错误。相反,我将keytool的输出重定向到文本文件,然后从那里复制了别名。

  1. 发出此命令:

    keytool -list -v -storetype pkcs12 -keystore“ mycertificate.p12”> cert.txt

(这非常重要。始终重定向到txt文件。请勿从控制台输出中复制。它可能包含错误的字符)

  1. 在证书中查找别名。打开cert.txt并复制“别名”前面提到的字符串

让我们说这个字符串是“我的别名,a.p是我的ca受限ID”

  1. 使用jarsigner:

    jarsigner -storetype pkcs12 -keystore“ mycertificate.p12” myjarfile.jar“我的别名,a.p.是我的ca受限ID”