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

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

有帮助吗?

解决方案

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

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

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

此处这里你可以找到一个例子。

其他提示

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

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

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

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

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

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

正确的解决方案。

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

以下脚本列出/ some / lib目录中每个jar中的RSA证书的序列号,并帮助查找由错误证书签名的jar:

for f in $( find /some/lib -type f -name '*.jar' )
do 
   serial=$( unzip -p $f 'META-INF/*.RSA' | 
             openssl pkcs7 -inform der -print -noout |
             grep --max-count=1 serialNumber | cut -d: -f2- | tr -d ' ' )
   printf "%40s: %s\n" "$serial" "$f"
done
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top