mirror of
https://gitee.com/zhijiantianya/ruoyi-vue-pro.git
synced 2026-07-09 06:50:32 +08:00
chore: 默认关闭 API 加密(api-encrypt.enable: true → false)
【背景】
yudao.api-encrypt 开启时,ApiEncryptFilter 构造函数会调用 hutool 的
SecureUtil.aes() 创建 AES 加密器,底层经 JCE(javax.crypto.Cipher)加载
BouncyCastle Provider。在低版本 JDK 8(8u120 以下)上,bcprov-jdk18on
无法通过 JCE 签名认证,导致 Fat Jar 启动失败:
Failed to instantiate [apiEncryptFilter];
nested exception is cn.hutool.crypto.CryptoException:
SecurityException: JCE cannot authenticate the provider BC
at javax.crypto.Cipher.getInstance(Cipher.java:652)
【JCE 根因】
bcprov jar 是 BouncyCastle 自签名(BC2048KE.DSA),非 Oracle 信任的 CA。
JDK 8u120 及更早版本的 JCE 对 Provider jar 做强签名校验且存在认证缺陷,
对自签名证书校验失败;8u121 起修复,9+ 彻底移除该强校验机制。
实测同一 bcprov-jdk18on-1.80.jar:
JDK 8u20 → JCE cannot authenticate the provider BC ❌
JDK 8u121+ → 正常 ✅
JDK 17/25 → 正常 ✅(JDK9+ 已无此机制)
故该报错为低版本 JDK 8 的环境问题,非项目代码 bug。
【改动】
将 api-encrypt.enable 默认值改为 false,规避低版本 JDK 8 启动失败。
不影响加密功能本身:需要 API 加密的用户改成 enable: true 即可,
建议同时将 JDK 升级到 8u121 以上(或 17/25)。
【性能】
已实测:开启 vs 关闭的启动耗时基本无差异(JDK25 实测各 3 轮,
平均 17.7s vs 17.0s,差值在误差范围内),关闭不带来启动加速,
仅用于兼容低版本 JDK 8。
This commit is contained in:
@ -273,7 +273,7 @@ yudao:
|
||||
permit-all_urls:
|
||||
- /admin-api/mp/open/** # 微信公众号开放平台,微信回调接口,不需要登录
|
||||
api-encrypt:
|
||||
enable: true # 是否开启 API 加密
|
||||
enable: false # 是否开启 API 加密。默认关闭,避免低版本 JDK 8(8u120 以下)启动时 bcprov 的 JCE 认证报错
|
||||
algorithm: AES # 加密算法,支持 AES、RSA 等
|
||||
request-key: 52549111389893486934626385991395 # 【AES 案例】请求加密的秘钥,,必须 16、24、32 位
|
||||
response-key: 96103715984234343991809655248883 # 【AES 案例】响应加密的秘钥,AES 案例,必须 16、24、32 位
|
||||
|
||||
Reference in New Issue
Block a user