案例:我正在维护一个使用bcpkix-jdk15on-149.jar,和bcprov-jdk15on-149.jar.库BouncyCastle的Java applet
问题是当小程序在启用了7_u40的JRE版本的浏览器上运行时。
与7_u25版本相比,它的行为已经发生了变化,它总是会提示一个模式窗口,比如“使用自签名证书的应用程序的安全提示”(不能再永久隐藏),只是为了信任bcprov。
https://www.java.com/en/download/help/appsecuritydialogs.xml
据我所知,这是因为BC库使用由"JCE代码签名CA“颁发的BouncyCastle证书进行签名。正因为如此,库可以执行并充当加密提供程序。
但是: JRE不能建立信任签名的证书链。它显示"provider : UNKNOWN“
我知道我可以删除签名并自己签名(我拥有一个Thawte代码签名证书):
我说的对吗?我能做什么?
PS:我用谷歌搜索了很多次才找到JCA根证书(把它放到JRE信任库中),但是没有成功……有没有办法获取根CA?
发布于 2013-09-27 19:54:14
经过大量的搜索和BC邮件列表中的一些帖子...我找到了解决方案,所以我把它放在这里,供其他可能面临这个问题的人参考:
基本上,解决方案是使用我自己的证书对BC库进行第二次签名。
JAR需要JCA签名才能被信任为加密提供程序,因此不要删除它。
JAR还需要(另外)代码签名,以便能够在JVM中运行(受JRE信任)。
最后一件事,在签名技术上发生了一些不兼容:
下面是jarsigner命令的神奇参数,用来添加和实现它:-digestalg SHA1
示例命令:
jarsigner -keystore ./mykeystore.jks -storepass myPass -digestalg SHA1 bcprov-jdk15on-149.jar myAlias
..。你就完事了!
下面的帖子给了我这个提示:What prevents Java from verifying signed jars with multiple signature algorithms
发布于 2015-12-04 00:53:28
我们还可以添加另一个stackoverflow帖子和对我有帮助的答案:
这行代码是:Security.addProvider(新org.bouncycastle.jce.provider.BouncyCastleProvider());
帮助我摆脱了异常。
https://stackoverflow.com/questions/19029575
复制相似问题