首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在Java7u40上与applet一起使用的BouncyCastle加密提供程序库

在Java7u40上与applet一起使用的BouncyCastle加密提供程序库
EN

Stack Overflow用户
提问于 2013-09-26 21:24:11
回答 2查看 8.6K关注 0票数 19

案例:我正在维护一个使用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代码签名证书):

  • 它适用于bcpkix lib
  • 它不适用于bcprov,因为它不会被视为有效的加密提供程序(它不会被JRE信任)。

我说的对吗?我能做什么?

PS:我用谷歌搜索了很多次才找到JCA根证书(把它放到JRE信任库中),但是没有成功……有没有办法获取根CA?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-09-27 19:54:14

经过大量的搜索和BC邮件列表中的一些帖子...我找到了解决方案,所以我把它放在这里,供其他可能面临这个问题的人参考:

基本上,解决方案是使用我自己的证书对BC库进行第二次签名。

JAR需要JCA签名才能被信任为加密提供程序,因此不要删除它。

JAR还需要(另外)代码签名,以便能够在JVM中运行(受JRE信任)。

最后一件事,在签名技术上发生了一些不兼容:

  • BC lib使用SHA1摘要签名(在我的电脑上)默认情况下使用SHA256摘要算法进行签名,这会导致验证失败。
  • 所以我不得不要求jarsigner以SHA1的方式进行签名。(出于某种原因,这两个签名必须保持一致)

下面是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

票数 22
EN

Stack Overflow用户

发布于 2015-12-04 00:53:28

我们还可以添加另一个stackoverflow帖子和对我有帮助的答案:

这行代码是:Security.addProvider(新org.bouncycastle.jce.provider.BouncyCastleProvider());

帮助我摆脱了异常。

来源:jce cannot authenticate the provider bc

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19029575

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档