大家好,我是R哥。

最近我把我的《Spring Cloud Alibaba 微服务实战课》适配了 Spring Cloud Alibaba 2023.0.1.0 官方最新版本适配:

  • Spring Cloud Alibaba => 2023.0.1.0
  • Spring Cloud => 2023.0.1
  • Spring Boot => 3.2.4

以下官方组件依赖需要升级:

  • Nacos 2.2.1 => 2.3.2
  • RocketMQ 4.9.4 => 5.1.4
  • Sentinel => 1.8.6(和上一版没有变化)
  • Seata 1.7.0 => 2.0.0

在完成适配后进行功能测试时,我发现了一个 Nacos 的重大 bug!!!

大概的问题是这样的:

使用 Nacos 配置加解密插件后,在 Nacos 控制台首次添加加密配置时,数据中能正常保存加密后的配置内容:

但在 Nacos 控制台二次编辑加密配置时,数据库中配置内容就变成明文了。。。

此时,因为数据库是明文,所以使用了该配置加解密的应用启动时,就会抛出 DecoderException 解密失败异常:

org.apache.commons.codec.DecoderException: Odd number of characters.
    at org.apache.commons.codec.binary.Hex.decodeHex(Hex.java:97) ~[commons-codec-1.16.1.jar:1.16.1]
    at org.apache.commons.codec.binary.Hex.decodeHex(Hex.java:77) ~[commons-codec-1.16.1.jar:1.16.1]

也正是因为看到了这个异常日志,我才排查到 Nacos 这个 bug。

不过好的一点是,此异常只是记录错误日志并返回原明文内容,并不会向上抛出异常,所以,它虽然不会影响系统正常使用,但这个配置加解密功能就形同虚设了,对数据安全造成严重影响。


我本想在 Nacos Issues 中提出这个 bug 的,事前查了下,没想到这个 bug 居然在 2023 年 9 月份就已经有人提出来了,Issue 地址如下:

https://github.com/alibaba/nacos/issues/11141

在 bug 提出 5 天后,有个 Nacos 项目的兄弟说他会解决这个问题,没想到这个 bug 在过去将近 10 个月后还处于 Open 状态,难以置信啊。。

难道已经修复了状态没更新?

虽然在最新的 Spring Cloud Alibaba 2023.0.1.0 对应的 Nacos 2.3.2 版本中依然存在,但我抱着一查到底的态度,去查看了最新的 Nacos 2.4.0-BETA 版本,这个 bug 依然没有在解决说明中。。

以下是最新 Nacos 2.4.0-BETA 的 BugFix 更新列表:

这 bug 可大可小,事关配置数据的安全性,所以问题严重性可大可小,是官方忘了这个 bug,还是这个 bug 真的遇到棘手问题了,有这么难解决?

不管怎么样,虽然是开源项目,但解决问题的效率真的令人堪忧,毕竟这个问题都快接近一年了,这是置若罔闻啊,后续我也会继续跟进这个 bug 的修复进度,在我的《Spring Cloud Alibaba 微服务实战课》中我也会及时更新。

对配置加解密敏感的同学尽量不要升级到 Spring Cloud Alibaba 2023.0.1.0,如果是独立使用 Nacos 的,Nacos 建议使用之前正常的 2.2.1 版本,超过这个版本的可能都会出现这个问题。

我在公众号「Java技术栈」首发这篇文章后,官方澄清了,问题已经在 Nacos 2.4.0-BETA 版本中修复,相关问题也已经 Close 掉了,等正式版本发布后我再测试吧。


最后,推荐下我的 Spring Cloud 微服务实战课,从 2022 年首发的 2021 版本一直更新到现在最新的 2023 版本,只要这个课程有更新,都是免费提供更新的,一次订阅,永久学习,永久免费提供更新。

如果你想系统学习 Spring Cloud 微服务体系,想学习微服务项目架构设计,以及各种主流框架、中间件的衔接和运用,这个课程正适合你。

课程无废话,含全部实战示例代码,项目可正常运行。

学完直接把各种微服务技术写到简历里,面试跳槽谈薪水时会更有底气,多提升自己,在职涨薪也指日可待。

早订阅的小伙伴,一路学习跟过来,就知道有多值了,不要乱学老旧的微服务技术了,浪费时间,和R哥学习最新的 Spring Cloud 微服务技术,少走弯路。

扫码直接订阅:

本次订阅用户再赠送小程序 Java面试库》1 年 VIP 使用权益,免积分无限刷题。

点击「阅读原文」了解详情后再订阅

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

评论(1)