BouncyCastle加密提供程序库用于Java 7u40上的applet

栏目: Java · 发布时间: 5年前

内容简介:http://stackoverflow.com/questions/19029575/bouncycastle-cryptography-provider-library-used-with-applet-on-java-7u40

情况:我正在维护使用BouncyCastle库bcpkix-jdk15on-149.jar和bcprov-jdk15on-149.jar的Java applet.

问题是当小程序在启用JRE版本7_u40的浏览器上运行时.

该行为已经从版本7_u25发生了变化,它总是提示一个模态窗口,如“使用自签名证书的应用程序的安全提示”(不能永久隐藏),只是为了信任bcprov.

https://www.java.com/en/download/help/appsecuritydialogs.xml

据我所知,这是因为BC图书馆由“JCE代码签署CA”签发的BouncyCastle证书签署.

因此,lib可以执行并充当密码提供者.

但是:JRE无法构建证书链来信任签名.它显示“提供者:未知”

我知道我可以删除该签名并自己签名(我拥有一个Thawte代码签名证书):

>它适用于bcpkix lib

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

我对吗?

我能做什么?

PS:我已经很多地找到JCA根证书(将其放入JRE信任库),没有成功…有没有办法抓取根CA?

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

解决方案基本上是用我自己的证书第二次签署BC图书馆.

JAR需要JCA签名才能作为加密提供者被信任,因此不要将其删除.

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

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

> BC lib使用SHA1 digest algorythm进行签名

> jarsigner(在我的电脑上)默认使用SHA256 digest algorythm进行签名,这导致验证失败.

所以我不得不要求jarsigner做这个SHA1的方法. (由于某种原因,两个签名必须从这个角度来看是一致的)

这是jarsigner命令的魔术参数,添加并使其发生:

消泡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

http://stackoverflow.com/questions/19029575/bouncycastle-cryptography-provider-library-used-with-applet-on-java-7u40


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

AI极简经济学

AI极简经济学

阿杰伊·阿格拉沃尔、乔舒亚·甘斯、阿维·戈德法布 / 闾佳 / 湖南科技出版社 / 2018-12-1 / 58.00

人工智能正在以不可阻挡的态势席卷全球。无论是iPhone的神经网络引擎、AlphaGo的围棋算法,还是无人驾驶、深度学习……毫无疑问,人工智能正在改写行业形态。如同此前个人电脑、互联网、大数据的风行一般,技术创新又一次极大地改变了我们的工作与生活。 那么,究竟应该如何看待人工智能?在《AI极简经济学》一书中,三位深耕人工智能和决策领域的经济学家给出了清晰的答案。他们以坚实的经济学理论剖析动态,把握......一起来看看 《AI极简经济学》 这本书的介绍吧!

html转js在线工具
html转js在线工具

html转js在线工具

RGB HSV 转换
RGB HSV 转换

RGB HSV 互转工具

HEX HSV 转换工具
HEX HSV 转换工具

HEX HSV 互换工具