首页 文章

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

提问于
浏览
16

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

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

6 回答

  • 12

    当我检查 jar 后遇到类似的问题时,发现有些第三方 jar 是由其他人签名的 .

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

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

    Herehere你可以找到一个例子 .

  • 0

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

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

  • 2

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

  • 3

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

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

  • 3

    请参阅常见问题解答之一的说明:How do I use multiple JAR files signed by different certificates?

    正确的方案 .

  • 2

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

相关问题