7

我正在尝试使用 globalsign 颁发的代码签名证书对 jar 文件进行签名。

我对此完全陌生,但经过一些谷歌搜索和大量试验和错误后,我执行了以下步骤。

我已使用以下方法在我的密钥库中导入了证书:

keytool -importcert -alias signalias -file OS200912023195.cer

当我尝试使用以下命令对我的 jar 文件进行签名时:

jarsigner applet.jar signalias

我收到以下错误:

jarsigner:找不到证书链:signalias。signalias 必须引用包含私钥和相应公钥证书链的有效 KeyStore 密钥条目。

我是否忘记了什么或证书有问题?

4

5 回答 5

6

...我想知道我是否可能需要的不仅仅是 cer 文件?...

@Mark 我想你是对的。我记得,异常类型像

jarsigner:找不到证书链:signalias。signalias 必须引用包含私钥和相应公钥证书链的有效 KeyStore 密钥条目。

...让我觉得你试图只用证书签署 jar。所以你必须跳过一些重要的步骤:|

如果要使用证书,首先要做的就是生成CSR ...

  • A) 生成密钥库;然后在密钥库中生成公钥/私钥。命令就像一个

keytool -genkey -alias mydomain -keyalg RSA -keystore keystore.jks -keysize 2048

  • B)然后是 gen CSR - 有关更多信息,您可以阅读内容。命令就像一个

keytool -certreq -alias mydomain -keystore keystore.jks -file mydomain.csr

  • C)有关 keytool 常用命令的更多详细信息,您可以阅读此内容

如果您对 OpenSSL 没问题,那么按照步骤 D 生成您自己的证书...

  • D)如果您需要自签名证书,您可以按照以下步骤操作...

...返回您的密钥库

  • E)只有在那之后,您才能使用以下命令将证书导入您的密钥库

keytool -import -trustcacerts -alias root -file server.crt -keystore keystore.jks

  • F)只有这样你才能使用jarsigner工具来签署你的 jar

评论是否有帮助

于 2012-08-07T18:12:10.327 回答
2

.cer文件从不存储私钥,并且要签署一个JAR您需要在您的密钥库中有一个私钥。所以我想,您需要找出证书的私钥在哪里,并将其添加到您的密钥库中。

于 2012-08-07T07:48:55.503 回答
0

您能否使用以下命令来验证您导入的证书的密钥库。

keytool -list -v -keystore your_keystore_name -alias your_alias

如果发现详细信息正确,则提供的证书似乎存在问题。它是不完整的。

于 2012-08-03T15:26:21.417 回答
0

希望这会有所帮助: Java 教程 - 签署 JAR 文件

另外,请查看上述教程中引用的页面

于 2012-08-07T08:28:44.913 回答
0

jarsigner:找不到证书链:signalias。signalias 必须引用包含私钥和相应公钥证书链的有效 KeyStore 密钥条目。

当我使用 openssl 命令而不是使用 keytool 创建证书签名请求 (CSR) 时,出现了该错误。结果是,当我生成我的密钥库时,它不包含私钥,只包含我导入的证书。

这篇文章解决了我的问题:Java 密钥库可以导入 OpenSSL 生成的密钥对吗?

使用 OpenSSL 创建密钥和证书后,使用 OpenSSL 创建 PKCS #12 密钥库:

openssl pkcs12 -export -in cert.pem -inkey key.pem > server.p12

然后将此存储转换为 Java 密钥存储:

keytool -importkeystore -srckeystore server.p12 -destkeystore server.jks -srcstoretype pkcs12

于 2013-11-14T20:21:57.897 回答