几周以来,我们一直在遭受同样的问题困扰,并且尝试了很多建议的步骤均无济于事。在下面提供我们的解决方案,这样其他人就不必像我们一样受苦了!
我们试图使用 bcprov-ext-jdk15on-162.jar,添加到类路径,包含在 JBoss lib 目录中,与 WAR 捆绑,标记为已提供并添加到 JBoss /lib 目录,但没有运气。
最后,我们尝试了不同版本的 bouncycastle,发现了一个较新的版本,其签名可以通过我们特定的 Java 版本的 jarsigner (1.5X) 进行验证。
尽管我们的 Java 版本可以验证 jar 的签名,但当 .jar 被打包到 WAR 中时,JBoss 以某种方式使签名无效。
最后,我们的解决方案是;
1. Add bouncycastle jar to JBoss classpath
2. Add 'org.bouncycastle.jce.provider.BouncyCastleProvider' to 'java.security' providers
3. Mark bouncycastle in your WAR as a 'provided' dependency
一旦我们在类路径中有一个版本的 .jar 并且确定我们的 WAR 没有将它打包进去,我们就很成功了。
这个问题似乎与您碰巧使用的 Java/JBoss 版本紧密相关。因此,如果此解决方案对您不起作用,我建议您测试不同版本的 bouncycastle
jarsigner -verify <bouncycastle.jar>