当前位置: 首页 > 知识库问答 >
问题:

与Java 7u40上的小程序一起使用的BouncyCastle加密提供程序库

闻人冷勋
2023-03-14

案例:我正在维护一个Java小程序,它使用BouncyCastle库bcpkix-jdk15on-149。jar和bcprov-jdk15on-149。罐子

问题是小程序在启用JRE版本7\u u40的浏览器上运行时
该行为与版本7\u u25不同,它总是会提示一个模式窗口,如“使用自签名证书的应用程序的安全提示”(无法永久隐藏),只是为了信任bcprov。

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

据我所知,这是因为BC库是用“JCE代码签名CA”颁发的BouncyCastle证书签名的。因此,lib可以执行并充当加密提供者。

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

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

  • 它与bcpkix库配合使用

我说得对吗?我能做什么

共有2个答案

梁昊天
2023-03-14

我们还可以包括其他stackoverflow帖子和帮助我的答案:

把线: Security.add提供者(新org.bouncycastle.jce.provider.BouncyCastleProvider());

帮助我摆脱了例外。

来源:jce无法验证提供者bc

谷梁博易
2023-03-14

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

解决方案基本上是用我自己的证书再次签署BC库
JAR需要JCA签名才能被信任为加密提供者,所以不要删除它 html" target="_blank">jvm中运行(受jre信任)。<>

最后,签名技术出现了一些不兼容:

  • BC库使用SHA1摘要算法签名
  • jarsigner(在我的计算机上)默认使用SHA256摘要算法进行签名,这会导致验证失败
  • 所以我不得不让jarsigner用SHA1的方式来做。(出于某种原因,从这个角度来看,两个签名必须保持一致)

这是jarsigner命令的神奇参数,可以添加并实现它:-digestalg SHA1

示例命令:

jarsigner -keystore ./mykeystore.jks -storepass myPass -digestalg SHA1 bcprov-jdk15on-149.jar myAlias

...你就完了!

下面的帖子给了我提示:是什么阻止Java使用多个签名算法验证签名罐

 类似资料:
  • 我正在尝试加密C#客户端和iSeries服务器之间的通信,但遇到了一些问题。我正在尝试使用Diffie Hellman创建共享秘密,但共享秘密不匹配。 我在C#中使用Bouncy Castle,在iSeries上使用QC3*API。步骤是: C# 客户端生成 DH 参数,并将其与客户端公钥一起发送到服务器。 C服务程序对参数进行解码,调用QC3GENDK创建服务器公钥。 服务器使用客户端公钥调用

  • 我正在使用Spring Security 4.0.1,并希望使用多个身份验证提供程序使用基于Java的配置进行身份验证。如何指定提供程序顺序? 我希望使用AuthenticationManagerBuilder,因为这就是<code>WebSecurityConfigurerAdapter。configureGlobal()公开,但我看不到任何指定顺序的方法。我需要手动创建ProviderMana

  • 你好Stackoverflow社区, 在尝试编译使用bouncycastle安全提供程序的maven项目时,我得到了以下错误:我知道必须对jar进行签名,因此我将此添加到pom.xml中以防止编译错误: 基于此(bouncycastle provider找不到算法所需的类),我添加了以下内容:,并且在公共静态void main中添加了具有以下内容的提供程序:。 不幸的是,这没有奏效。对于如何实现上

  • 在Java8上运行的一小部分示例代码中,我试图遵循bc-fips-1.0.2.jar用户指南Legion of the Bouncy Castle Inc. BC-FJA 1.0.2(Bouncy Castle FIPSJavaAPI)用户指南Date: 09/14/19: 注意:对FIPS模式的支持在Java 1.9中似乎已经开始消失,已经确认从Java 11开始它是一个空操作。对于Java 1

  • 问题内容: 有人可以向我解释差异吗? Provisioner-在docker中安装,运行,拉出容器中的一项工作。 提供程序-是运行VM的东西。即VBox运行ubuntu OS映像。 Docker如何成为提供者?它直接运行一些docker镜像吗?如果我在Windows上,必须有一些boot2docker的隐藏用法,对不对?我什么时候使用每个? 问题答案: Docker Provisioner帮助准备

  • 我已经创建了身份提供程序,并且从浏览器中它工作正常。 参考:密钥斗篷身份提供程序后代理登录抛出错误 从浏览器,我可以使用外部IDP登录,如果外部IDP用户不在keycloak中,它会在keyclock中创建,这绝对没问题,并重定向到仪表板。 但我的问题是,我们如何用keycloak rest api实现这个流程? 是否有任何api用于使用外部IDP登录,并将获得外部IDP的令牌以及密钥斗篷的令牌?