2009-01-10 33 views
16

我一直在使用web start几年,现在有签署jar和不是什么的经验。我正在尝试使用web start部署RCP应用程序,尽管实际上我已用相同的证书签署了所有jar,但我仍然收到此错误:'jnlp中的jar资源未由相同证书签名'jnlp中的jar资源没有被相同的证书签名

有没有人遇到过这个?如果是这样,关于如何解决的任何想法?

回答

12

当我在检查罐子后发现类似的问题时,发现有些第三方罐子是由其他人签名的。

你应该创建由其他证书签名的罐子一个单独的JNLP文件,并从您的JNLP文件阅读本JNLP:

<resources> 
    ... 
    <extension name="other" href="other.jnlp"/> 
</resources> 

Herehere你可以找到一个例子。

+0

这使得总体感,谢谢! – javamonkey79 2009-01-10 18:42:18

+2

我遇到了同样的问题。我没有使用扩展名,而是编写了一个小脚本,在自己签名之前从第三方jar中删除签名文件(例如META-INF/* .RSA,*。DSA和* .SF)。 – qualidafial 2009-06-25 14:37:31

3

这可能是您用作库的已签名jar的陈旧清单条目。我通过webstart通过jogl遇到了这个问题。试试这个:

解压所有罐子,清除所有META-INF目录,罐子并重新签名。

3

我发现JNLP/Webstart不喜欢多个签名/通过jarsigner.exe为给定的JAR签名。如果像BouncyCastle这样的JAR再次与贵公司的证书一起签名,目测检查使我相信新的证书和签名在JAR中正确执行。但是JNLP可能只是读取META-INF中的第一个(Alphabetical?)签名,因此抱怨它与您的其他JAR(每个JAR上只有一个Corporate,签名)不匹配。

2

我和Matthew所描述的BouncyCastle JAR具有完全相同的体验。然而,我发现JRE版本1.6.0_14和更高版本会很乐意接受带有多个签名的JAR(就像我期望的那样)。因此,我不需要使用上述的JNLP'组件扩展机制'。

PS 在1.6.0_14发行说明中未找到任何明显的对此修复的引用。但是,我已经验证了多个签名的JAR适用于所有更高版本(至少14 - 17 + 24)。

0

在我的项目中,发生的情况是负载平衡器池中有几个实例,有一些实例使用旧版本代码,一些使用新版本。因此,有证书没有签署相同的证书...

相关问题