使用.cer文件签署.jar文件

时间:2012-08-03 13:43:57

标签: java applet code-signing

我正在尝试使用globalsign颁发的代码签名证书签署一个jar文件。

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

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

keytool -importcert -alias signalias -file OS200912023195.cer

当我尝试使用以下方式签署我的jar文件时

jarsigner applet.jar signalias

我收到以下错误:

  

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

我是否忘记了证书的问题或存在问题?

5 个答案:

答案 0 :(得分:6)

  

...我想知道我是否需要更多的东西而不仅仅是一个cer文件?...

@Mark我想你是对的。我记得,像

这样的例外类型
  

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

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

如果您想使用证书,首先要做的是CSR ...

  • A)gen keystore;然后生成密钥库中的公钥/私钥。像
  • 这样的命令
  

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

  • B)然后生成CSR - 有关更多信息,请阅读this。像
  • 这样的命令
  

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

  • C)有关keytool常用命令的更多详细信息,请参阅this

如果您对OpenSSL没问题,请按照以下步骤生成您自己的证书......

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

...回到你的密钥库

  • E)只有在您使用
  • 之类的命令导入证书到您的密钥库之后
  

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

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

评论是否有帮助

答案 1 :(得分:2)

.cer文件永远不会存储私钥,要签署JAR,您需要在密钥库中拥有私钥。所以我想,您需要找出证书私钥的位置,并将其添加到您的密钥库中。

答案 2 :(得分:0)

是否可以使用以下命令验证导入证书的密钥库。

keytool -list -v -keystore your_keystore_name -alias your_alias

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

答案 3 :(得分:0)

答案 4 :(得分:0)

  

jarsigner:找不到证书链:signalias。 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