【问题标题】:Signing .jar file with a .cer file使用 .cer 文件对 .jar 文件进行签名
【发布时间】:2013-11-15 04:21:57
【问题描述】:

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

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

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

keytool -importcert -alias signalias -file OS200912023195.cer

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

jarsigner applet.jar signalias

我收到以下错误:

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

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

【问题讨论】:

  • 进展如何? jar 签名成功了吗?
  • 还没有,我今天再试一次。感谢您的输入。我会及时通知您,并会在 4 天内接受答复。

标签: java applet code-signing


【解决方案1】:

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

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

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

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

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

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

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

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

keytool -certreq -alias mydomain -keystore keystore.jks -file 我的域名.csr

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

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

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

...返回您的密钥库

  • E) 之后,您才可以使用类似的命令将证书 导入 到您的密钥库中

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

  • F) 只有这样您才能使用 jarsigner 工具对您的 jar 进行签名

如果有帮助请评论

【讨论】:

  • 我完成了您描述的每一步(使用自签名证书),但收到相同的错误“找不到...的证书链”。是否有可能生成有效的自签名证书来愚弄 Java ???
  • 嗨@user592704 你能帮忙解决这个关于签署小程序的类似问题......我们不知道是使用私钥还是我们通过解冻经销商收到的代码签名证书:@987654326 @
【解决方案2】:

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

【讨论】:

  • 感谢您的回答,我应该自己创建密钥库还是应该将 jks 文件与证书一起创建?
  • 您可以在您的密钥库中导入私钥,但首先,您应该获取私钥。私钥通常分布在 pkcs12 (.p12) 密钥库中。联系您的证书提供商并询问 PK 在哪里。
【解决方案3】:

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

keytool -list -v -keystore your_keystore_name -alias your_alias

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

【讨论】:

  • 显示的细节似乎是正确的并且仍然有效,过去另一个 .jar 文件显然是用相同的 .cer 文件签名的。我想知道我是否需要的不仅仅是 cer 文件
【解决方案4】:

【讨论】:

    【解决方案5】:

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

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

    这篇文章解决了我的问题:Can a Java key store import a key pair generated by 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

    【讨论】:

      猜你喜欢
      • 2011-05-11
      • 1970-01-01
      • 1970-01-01
      • 2015-07-02
      • 2013-11-21
      • 2017-02-07
      • 2013-01-09
      • 2011-10-15
      • 1970-01-01
      相关资源
      最近更新 更多