jnlp中的jar资源未由同一证书签名

我已经在网络开始工作了几年,并且有签署jar子的经验,什么不是。 我正在第一次尝试使用Web start部署RCP应用程序,虽然我实际上已使用相同的证书签署了所有的jar,但我仍然收到此错误:’jnlp中的jar资源未使用相同的证书签名’

还有其他人遇到过这个吗? 如果是这样,有关如何解决的任何想法?

当我检查jar子后遇到类似的问题时,发现某些第三方jar子是由其他人签署的。

您应该为其他证书签名的jar创建一个单独的jnlp文件,并从您的jnlp文件中读取此jnlp:

 ...   

在这里或这里你可以找到一个例子。

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

解压缩所有jar,清除所有META-INF目录,然后再次对其进行签名。

我发现JNLP / Webstart不喜欢通过jarsigner.exe为给定的JAR进行多次签名/签名。 如果BouncyCastle(预先签署的)等JAR再次与您的公司证书签署,目视检查会让我相信新的证书和签名在JAR中正确执行。 但是JNLP可能只读取META-INF中的第一个(字母顺序?)签名,因此抱怨它与您的其他JAR(每个JAR上只有一个,Corporate,签名)不匹配。

我有完全相同的经验,如马修所描述的预先签署的BouncyCastle JARs。 但是,我发现JRE版本1.6.0_14及更高版本很乐意接受具有多个签名的JAR(正如我所料)。 因此,我不需要使用上面描述的JNLP’组件扩展机制’。

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

请参阅常见问题解答之一的说明: 如何使用由不同证书签名的多个JAR文件?

正确的方案。

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