Java 使用.cer文件对.jar文件进行签名

Java 使用.cer文件对.jar文件进行签名,java,applet,code-signing,Java,Applet,Code Signing,我正在尝试使用globalsign颁发的代码签名证书对jar文件进行签名 我对这一点完全陌生,但在谷歌搜索和反复尝试之后,我执行了以下步骤 我已使用以下方法将证书导入密钥库: keytool -importcert -alias signalias -file OS200912023195.cer 当我尝试使用以下方式对jar文件进行签名时: jarsigner applet.jar signalias 我得到以下错误: jarsigner:找不到的证书链:signalias。signali

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

我对这一点完全陌生,但在谷歌搜索和反复尝试之后,我执行了以下步骤

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

keytool -importcert -alias signalias -file OS200912023195.cer
当我尝试使用以下方式对jar文件进行签名时:

jarsigner applet.jar signalias
我得到以下错误:

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


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

请使用下面的命令验证导入证书的密钥库

keytool-list-v-keystore您的\u keystore\u名称-别名您的\u别名


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

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

希望这对您有所帮助:

还有,看看

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

@马克,我想你是对的。正如我所记得的,异常类型如下

jarsigner:找不到的证书链:signalias。信号必须 引用包含私钥和 相应的公钥证书链

。。。让我觉得你只是想用证书在jar上签名。因此,必须跳过一些重要步骤:|

如果您想使用证书,首先要做的是生成

  • A) gen密钥库;然后在密钥库中生成公钥/私钥。命令像一个
keytool-genkey-alias mydomain-keyalg RSA-keystore keystore.jks -键值2048

  • B) 然后gen CSR-有关更多信息,请阅读。命令像一个
keytool-certreq-alias mydomain-keystore keystore.jks-file mydomain.csr

  • C) 有关keytool常用命令的更多详细信息,请阅读
如果您同意OpenSSL,则按照以下步骤生成您自己的证书

  • D) 如果您需要具有自签名证书,您可以 遵循以下步骤
…回到你的密钥库

  • E) 只有在这之后,您才能使用如下命令将证书导入密钥库
keytool-import-trustcacerts-alias root-file server.crt-keystore keystore.jks

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

如果有帮助,请发表评论

jarsigner:找不到的证书链:signalias。信号必须 引用包含私钥和 相应的公钥证书链

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

这篇文章解决了我的问题:

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

openssl pkcs12-导出-在cert.pem-inkey key.pem>server.p12中

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

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


显示的细节似乎是正确的,并且仍然有效,在过去,另一个.jar文件显然是用同一个.cer文件签名的。我想知道我是否需要的不仅仅是cer文件谢谢你的回答,我应该自己创建密钥库还是jks文件随证书一起提供?你可以在密钥库中导入私钥,但首先,你应该获得私钥。私钥通常分布在pkcs12(
.p12
)密钥库中。联系您的证书提供商并询问,PK在哪里。进展如何?你在罐子上签字成功了吗?还没有,我今天要再试一次。谢谢你的意见。我会让您随时更新,并在4天内接受答复。我完成了您描述的每一步(使用自签名证书),但收到了相同的错误“找不到…的证书链”。是否有可能生成有效的自签名证书来愚弄Java???hi@user592704您能帮助解决这个类似的问题吗。。。我们不知道是使用私钥还是通过thawte经销商收到的代码签名证书: