我已经使用 web start 工作了几年,并且有签署 jar 的经验以及其他方面的经验。我第一次尝试使用 web start 部署 RCP 应用程序,虽然我实际上已经使用相同的证书签署了所有 jar,但我不断收到此错误:'jnlp 中的 jar 资源没有由相同的证书签名'
有没有其他人遇到过这个?如果是这样,关于如何解决的任何想法?
我已经使用 web start 工作了几年,并且有签署 jar 的经验以及其他方面的经验。我第一次尝试使用 web start 部署 RCP 应用程序,虽然我实际上已经使用相同的证书签署了所有 jar,但我不断收到此错误:'jnlp 中的 jar 资源没有由相同的证书签名'
有没有其他人遇到过这个?如果是这样,关于如何解决的任何想法?
这可能是您用作库的已签名 jar 中的陈旧清单条目。我通过 webstart 遇到了 jogl 的这个问题。试试这个:
解压所有 jars,清除所有 META-INF 目录,jar 并再次签名。
我发现 JNLP/Webstart 不喜欢通过 jarsigner.exe 对给定 JAR 进行多个签名/签名。如果像 BouncyCastle(预先签名的)这样的 JAR 使用贵公司的证书再次签名,目视检查让我相信新的证书和签名在 JAR 中正确执行。但是 JNLP 可能只读取 META-INF 中的第一个(按字母顺序排列的?)签名,因此抱怨它与您的其他 JAR 不匹配(每个 JAR 上只有一个 Corporate 签名)。
The following script lists serial number of the RSA certificate in each jar in /some/lib directory and helps to find jars that are signed by the wrong certificate:
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
请参阅常见问题解答之一的说明:如何使用由不同证书签名的多个 JAR 文件?
正确的解决方案。
我对预先签名的 BouncyCastle JAR 的体验与 Matthew 所描述的完全相同。但是,我发现 JRE 版本 1.6.0_14 及更高版本将很乐意接受具有多个签名的 JAR(如我所料)。因此,我不需要使用上述 JNLP 的“组件扩展机制”。
PS 在 1.6.0_14 发行说明中没有找到任何明显的对这个修复的引用。但是,我已经验证了多个签名的 JAR 在所有更高版本(至少 14 - 17 + 24)中都有效。
In my project, what happened is that there are couple of instances in the load balancer pool, there are some instances with old version of code and some with new version. Thus there are certificates not signed by same certificate...