-
-
Notifications
You must be signed in to change notification settings - Fork 7.5k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Linux 环境下 java17 使用 Bouncy Castle 做加解密会出现 JCE cannot authenticate the provider BC 异常 #2631
Comments
这个问题归根来说还是,jce中Security文件中缺少这个,而您说的方案是运行前临时假如环境变量,虽然是可行的,但是某些打包环境下,还是会出现问题,最好的办法还是部署时候加个环境变量,修改下Security文件 |
嗯……虽然不能完全解决这个问题,5.8.8.会在全局引用BC时调用下这个方法,来解决部分环境问题。 |
可惜 java17 没有 security 文件,之前确实想改来着 |
我的是有的?
…---原始邮件---
发件人: ***@***.***>
发送时间: 2022年9月26日(周一) 晚上7:02
收件人: ***@***.***>;
抄送: ***@***.******@***.***>;
主题: Re: [dromara/hutool] Linux 环境下 java17 使用 Bouncy Castle 做加解密会出现 JCE cannot authenticate the provider BC 异常 (Issue #2631)
这个问题归根来说还是,jce中Security文件中缺少这个,而您说的方案是运行前临时假如环境变量,虽然是可行的,但是某些打包环境下,还是会出现问题,最好的办法还是部署时候加个环境变量,修改下Security文件
可惜java17没有security文件,之前确实想改来着
—
Reply to this email directly, view it on GitHub, or unsubscribe.
You are receiving this because you commented.Message ID: ***@***.***>
|
你是用jdk生成的jre吗?我直接用的oracle jdk17,emmm |
@FULaBUla |
|
我发现 jdk17 禁用了 ext,配置完了 security 文件后不知道应该把那个 jar 放在哪里,如果只配置不做别的操作,直接 springboot 打包运行还是会报错 |
@FULaBUla What is the final solution? |
@CherryRum 咨询下oraclejdk17 使用 Bouncy Castle 做加解密会出现 JCE cannot authenticate the provider BC 异常, 完整的解决方案有吗? |
|
改什么地方啊 |
所以怎么解决现在 |
@chenhongen 不要打fatjar,bc库单独引入。 |
我也遇到了同样的问题 库单独引入测试无效 只能 SecureUtil.disableBouncyCastle(); |
|
只能打包时候不使用默认的打包,单独打包bc |
我是这解决的 private static final AES SINGLE_AES; static { |
你用的是oracle的jdk吧,openjdk是不会出现这种问题的
| |
John
|
|
***@***.***
|
…---- 回复的原邮件 ----
| 发件人 | ***@***.***> |
| 发送日期 | 2023年07月26日 11:01 |
| 收件人 | ***@***.***> |
| 抄送人 | ***@***.***> ,
***@***.***> |
| 主题 | Re: [dromara/hutool] Linux 环境下 java17 使用 Bouncy Castle 做加解密会出现 JCE cannot authenticate the provider BC 异常 (Issue #2631) |
我是这解决的
private static final AES SINGLE_AES;
static {
SecureUtil.disableBouncyCastle();
SINGLE_AES = SecureUtil.aes(AES_KEY.getBytes(StandardCharsets.UTF_8));
}
—
Reply to this email directly, view it on GitHub, or unsubscribe.
You are receiving this because you commented.Message ID: ***@***.***>
|
嗯,我也是发现这个jdk17禁用了ext,提示如下: |
我也是,用了SecureUtil.disableBouncyCastle();才不报错,其他的改/lib/security/java.policy和conf/security/java.security,都没有解决。 |
6.x做一些改造,抛弃JCE API,单独定义对象来封装BC库的方法,我想能绕过安全验证。 此issue暂时打开保留。 |
bc库单独引入好像没用,我用的jdk是oracle的jdk-17.0.9。 |
@oniubi 后来我才发现,确实JDK新版中增加了对加密库的要求,就算是单独引入依旧存在这个问题。 因此打开此issue,6.x单独封装BC库了,跳过JCE。 |
// https://mvnrepository.com/artifact/org.bouncycastle/bcpkix-jdk18on |
试了,不行,JDK版本oracle 17.0.6,用上面的SecureUtil.disableBouncyCastle()可以解决 |
项目中需要使用SM4算法对配置文件解密,本地启动没问题,线上报 |
嗯呢,没办法官方镜像非要验证签名
…---原始邮件---
发件人: ***@***.***>
发送时间: 2024年6月15日(周六) 中午1:35
收件人: ***@***.***>;
抄送: ***@***.******@***.***>;
主题: Re: [dromara/hutool] Linux 环境下 java17 使用 Bouncy Castle 做加解密会出现 JCE cannot authenticate the provider BC 异常 (Issue #2631)
项目中需要使用SM4算法对配置文件解密,本地启动没问题,线上报JCE cannot authenticate the provider BC错误,最后将 Dockerfile 的基础镜像换成了 openjdk 解决了,感谢 @CherryRum 提供的思路。
—
Reply to this email directly, view it on GitHub, or unsubscribe.
You are receiving this because you were mentioned.Message ID: ***@***.***>
|
今天也遇到同样的问题 |
|
java version "21.0.4" 2024-07-16 LTS |
将jdk 升级到17.0.13 可以解决这个问题 Adoptium JDK17 |
@dddddkkkkk 感谢提供的解决思路。貌似第三方的openJDK都没有这个校验。 |
版本情况
JDK版本: oracle java 17
hutool版本: 5.8.7(请确保最新尝试是否还有问题)
问题描述(包括截图)
Linux 环境下 java17 使用 Bouncy Castle 做加解密会出现 JCE cannot authenticate the provider BC 。
spring-projects/spring-boot#28837 中有讨论过这个问题,在 2.7.2 及之前版本的springboot 有修复过这个问题,通过使用
可以解决问题,但是后来发现又会导致别的问题出现,所有修改被回归了。
在新的 2.7.3 和 2.74 版本依旧无法支持使用上面那个修改调用加解密库。
在议题中有另一个方式可以解决问题就是在调用 Bouncy Castle 前执行
Security.addProvider(new org.bouncycastle.jce.provider.BouncyCastleProvider());
。希望可以将这句话加到 hutool 调用 Bouncy Castle 的语句前,这样每次调用工具类的时候不需要在自己手动加了。
The text was updated successfully, but these errors were encountered: