案例:我正在维护一个Java小程序,该程序使用BouncyCastle库bcpkix-jdk15on-149.jar和bcprov-jdk15on-149.jar。
问题是当小程序在启用了JRE版本7_u40的浏览器上运行时。
行为已从版本7_u25更改为某种方式,它始终会提示一个模式窗口,例如“使用自签名证书的应用程序的安全提示”(无法再永久隐藏),只是为了信任bcprov。
https://www.java.com/zh_CN/download/help/appsecuritydialogs.xml
据我所知,这是因为BC库已使用由“ JCE代码签名CA”颁发的BouncyCastle证书进行了签名。因此,该库可以执行并充当密码提供程序。
但是:JRE无法建立证书链来信任签名。它显示“ provider:UNKNOWN”
我知道我可以删除该签名并自己签名(我拥有Thawte代码签名证书):
我对吗?我能做些什么?
PS:我在Google上进行了大量搜索,以找到JCA根证书(将其放入JRE信任库中),但没有成功...是否有办法获取该根CA?
经过大量搜索并在BC邮件列表中进行了一些张贴...。我找到了解决方案,因此将其放置在这里,供可能遇到该问题的其他人使用:
解决方案基本上是使用我自己的证书再次对BC库进行签名。
JAR需要JCA签名才能被信任为加密提供程序,因此请不要删除它。
为了能够在JVM(受JRE信任)中运行,JAR还(另外)需要代码签名。
最后一件事,签名技术发生了一些不兼容:
这是添加并实现它的jarsigner命令的魔术参数:-digestalg SHA1
示例命令:
jarsigner -keystore ./mykeystore.jks -storepass myPass -digestalg SHA1 bcprov-jdk15on-149.jar myAlias
...您就完成了!
以下帖子给了我提示:是什么阻止Java使用多种签名算法来验证签名的jar。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句