我已将证书导入到私有证书中 ~/.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.

我怎么解决这个问题?

有帮助吗?

解决方案

看来您的密钥库仅包含一个证书(公钥),您需要一个完整的密钥条目、私钥和整个证书链才能签署任何内容

其他提示

我遇到了同样的问题。我有 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"

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

如果你做得正确,当你使用 keytool -list -v 时,你将看到一个带有别名的条目,类型为

Entry type: PrivateKeyEntry
Certificate chain length: 3

为入境。如果您做错了,您将有两个条目

Entry type: PrivateKeyEntry
Certificate chain length: 1

Entry type: trustedCertEntry
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top