我正在尝试使用globalsign颁发的代码签名证书签署一个jar文件。
我对此完全陌生,但经过一些谷歌搜索和大量的反复试验后,我执行了以下步骤。
我使用以下方法在我的密钥库中导入了证书:
keytool -importcert -alias signalias -file OS200912023195.cer
当我尝试使用以下方式签署我的jar文件时
jarsigner applet.jar signalias
我收到以下错误:
jarsigner:找不到证书链:signalias。 signalias必须引用包含私钥和相应公钥证书链的有效KeyStore密钥条目。
我是否忘记了证书的问题或存在问题?
答案 0 :(得分:6)
...我想知道我是否需要更多的东西而不仅仅是一个cer文件?...
@Mark我想你是对的。我记得,像
这样的例外类型jarsigner:找不到证书链:signalias。 signalias必须 引用包含私钥的有效KeyStore密钥条目 相应的公钥证书链。
...让我觉得你只想用cert签名jar。所以你必须跳过一些重要的步骤:|
如果您想使用证书,首先要做的是CSR ...
keytool -genkey -alias mydomain -keyalg RSA -keystore keystore.jks -keysize 2048
keytool -certreq -alias mydomain -keystore keystore.jks -file mydomain.csr
如果您对OpenSSL没问题,请按照以下步骤生成您自己的证书......
...回到你的密钥库
keytool -import -trustcacerts -alias root -file server.crt -keystore keystore.jks
评论是否有帮助
答案 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