与 Netty 4.1.110 升级明细)
搜索引擎全文检索可观测性数据分析【免费下载链接】OpenSearch Open source distributed and RESTful search engine.项目地址https://gitcode.com/gh_mirrors/op/OpenSearch点击查看免费下载本篇指南基于 OpenSearch 官方发布说明 release-notes/opensearch.release-notes-1.3.17.md 撰写系统梳理 1.3.17 维护版本的三项核心升级运行时 JDK 安全更新、BouncyCastle FIPS 密码学库升级修复 3 个 CVE以及 Netty 网络库补丁升级。文中结合当前仓库源码JDK 打包、TLS 密钥解析、Netty 传输模块等实现帮助读者理解每次升级的落地位置、影响范围与验证方式可作为 1.3.x 长期维护分支升级评估与部署排障的参考手册。版本概览1.3.x 长期维护分支的例行安全更新1.3.17 于 2024-05-30 发布是 OpenSearch 1.3.x 系列面向广泛生产部署的长期支持分支的例行维护版本。与功能版本不同该版本不引入新特性全部变更集中在依赖与运行时环境的安全升级共包含三项升级对象升级前升级后核心目的OpenJDKEclipse Temurin11.0.22 系列11.0.2392024 年 4 月补丁集纳入季度 CPU 安全修复BouncyCastleFIPS 组件1.751.78.1修复 CVE-2024-30172、CVE-2024-30171、CVE-2024-29857Netty4.1.109.Final4.1.110.Final上游稳定性与缺陷修复从版本号跨度可见这是典型的小版本安全收割三项升级均不改变 API 与配置语义但对集群的运行时安全性TLS、传输层、加密密钥处理产生直接影响。下方三个小节分别展开并给出仓库中的源码与配置证据。升级一OpenJDK 更新至 Eclipse Temurin 11.0.239升级内容1.3.17 将随发行包捆绑的 JDK 更新为Eclipse Temurin 11.0.239。Eclipse Temurin 是 Adoptium 社区Eclipse 基金会主导的开源 JDK 发行版OpenSearch 1.3.x 系列基于 Java 11 运行因此该升级对应 2024 年 4 月的 OpenJDK 季度补丁更新Critical Patch Update涵盖该周期内公开披露的 JDK 安全漏洞修复。对应变更见发布说明PR #13406。源码证据JDK 的下载、打包与厂商定义当前仓库中与 JDK 捆绑机制直接相关的实现集中在两处版本目录gradle/libs.versions.toml 中定义了 JDK 供应商与版本bundled_jdk_vendor adoptium bundled_jdk 25.0.4.11其中bundled_jdk_vendor adoptium正是 TemurinAdoptium发行版的来源声明与 1.3.17 的 Temurin 11.0.239 属于同一供应渠道当前主线仓库已演进到更高版本号。distribution/build.gradle展示了 JDK 打包流水线对archives与packages子项目应用opensearch.jdk-download与opensearch.jre-download插件并按平台/架构矩阵下载对应 JDK/JREproject.jdks { [darwin, linux, windows].each { platform - (platform linux || platform darwin ? [x64, aarch64, s390x, ppc64le, riscv64] : [x64]).each { architecture - bundled_jdk_${platform}_${architecture} { it.platform platform it.version VersionProperties.getBundledJdk(platform, architecture) it.vendor VersionProperties.bundledJdkVendor it.architecture architecture } } } }下载后的 JDK 在打包时被放入发行包的jdk目录macOS 平台为jdk.app见 distribution/archives/build.gradle。打包产物还同时输出no-jdk 变体如no-jdk-linux-x64、no-jdk-windows-x64等供自带 JDK 的环境使用对应目录可在 distribution/archives 下查看。升级的实际影响自带 JDK 用户升级后发行包内的jdk目录即为 11.0.239无需额外操作。外部 JDK 用户若使用no-jdk发行包或自行指定JAVA_HOME请确保本机 JDK 至少为 11.0.23 或同等安全补丁级别否则无法获得本次安全修复。Docker 镜像Docker 相关构建同样复用该 JDK 定义见 distribution/docker 目录镜像升级即携带新 JDK。升级二BouncyCastle 依赖 1.75 → 1.78.1修复三项 CVE升级内容1.3.17 将 BouncyCastle 相关依赖从 1.75 升级到1.78.1官方发布说明明确标注该升级用于解决三个安全公告CVE-2024-29857CVE-2024-30171CVE-2024-30172这三个 CVE 均指向 BouncyCastle FIPS 密码学组件在 2024 年上半年披露的安全缺陷。在发布说明的语境下从 1.75 升级到 1.78.1 解决上述 CVE 即表明凡是部署在 1.3.17 之前版本、且启用了 BouncyCastle 相关功能的集群均处于这三个 CVE 的暴露面内。因此该升级对开启 TLS 传输加密、FIPS 合规模式或使用 PEM/JKS 密钥管理的生产集群尤为重要。源码证据BouncyCastle 在 OpenSearch 中的实际用途BouncyCastle 并非声明式依赖而是被核心代码直接调用最典型的实现在 libs/ssl-config/src/main/java/org/opensearch/common/ssl/PemUtils.java该类的静态初始化块PemUtils.java#L66-L74在启动时将BouncyCastleFipsProvider与BouncyCastleJsseProvider以最高优先级注册进 JCASecurity体系Security.insertProviderAt(new BouncyCastleFipsProvider(), highestPriority); Security.insertProviderAt(new BouncyCastleJsseProvider(), highestPriority);这意味着 SSL 相关操作ssl-config模块支撑了节点间传输加密与 REST TLS会优先走 BouncyCastle 的 FIPS 实现。私钥解析逻辑PemUtils.java#L120-L155依赖 BouncyCastle 的 PEM 解析与解密能力覆盖PKCS#8 加密私钥、OpenSSL 加密的 PEM 密钥对BEGIN ENCRYPTED PRIVATE KEY/BEGIN RSA PRIVATE KEY等、明文 PKCS#8/PKCS#1 密钥并使用JcePKCSPBEInputDecryptorProviderBuilder绑定BouncyCastleFipsProvider.PROVIDER_NAME完成 PBKDF 解密。注释还特别指出在FIPS approved-only 模式下部分 PBKDF 算法OpenSSL、PKCS#12 常用算法会被限制这正是 BouncyCastle 版本敏感性所在。另外构建配置 build.gradle 中带有 FIPS 模式开关-Dorg.bouncycastle.fips.approved_onlytrue该属性由发行配置 distribution/src/config/fips_java.security 配套使用表明仓库对 FIPS 合规场景有完整的支持链路——而这条链路的正确性直接依赖 BouncyCastle FIPS 库版本的健壮性。当前主线中的 BouncyCastle 版本演进作为参照当前主线仓库 gradle/libs.versions.toml 中 BouncyCastle 已迁移到 FIPS 2.x 系列bouncycastle_jce 2.1.3 bouncycastle_tls 2.1.24 bouncycastle_pkix 2.1.12 bouncycastle_pg 2.1.13 bouncycastle_util 2.1.7并在同文件的[bundles]段以bouncycastlebundle 形式聚合gradle/libs.versions.toml#L259-L265而 1.3.17 发布说明中的 1.78.1 属于 BC FIPS 1.x 维护线。1.3.x 分支用户应遵循该分支的升级节奏即 1.78.1不必照搬主线 2.x——版本线的选择由分支构建配置决定混用可能导致 FIPS 兼容性问题。升级三Netty 4.1.109.Final → 4.1.110.Final升级内容1.3.17 将网络库 Netty 从 4.1.109.Final 升级到 4.1.110.FinalPR #13802。Netty 是 OpenSearch 实现 HTTP/REST 与节点间传输通道的底层异步网络框架该升级属于 4.1 系列内的补丁级更新带来上游在该周期内积累的稳定性、协议处理与缺陷修复不涉及 API 变更。源码证据Netty 传输模块仓库中与 Netty 直接耦合的模块为 modules/transport-netty4其核心实现包括HTTP 服务端传输modules/transport-netty4/src/main/java/org/opensearch/http/netty4如Netty4Http3ServerTransport、Netty4HttpChannel等支撑 REST API 的 HTTP/1.1、HTTP/2 乃至 HTTP/3 处理传输层节点间通信实现与相应安全校验集成测试覆盖连接头校验、HTTP/2、HTTP/3、请求大小限制、pipelining 等场景例如 Netty4HttpRequestSizeLimitIT.java 与 Netty4PipeliningIT.java这些测试在升级 Netty 版本后即成为回归防线。当前主线仓库中 Netty 版本已推进到 gradle/libs.versions.toml#L44 的netty 4.2.18.Final4.2.x 新主线并以nettybundle 聚合十余个组件gradle/libs.versions.toml#L238-L2521.3.17 的 4.1.110.Final 则保持在 4.1 维护线内两者互不干扰。升级的实际影响传输层行为4.1.110 未改动 Netty 对外 API因此opensearch.yml中http.port、transport.port、http.compression等网络相关配置均无需调整若升级后观察到连接建立、TLS 握手或 HTTP 帧解析相关异常日志应优先对照 4.1.110 的修复清单排查。插件兼容性依赖 Netty 的插件如transport-reactor-netty4、transport-grpc等见 modules 与 plugins应验证其 Netty 4.1 兼容范围。如何验证 1.3.17 的升级已正确生效升级发行包后可从三个层面确认变更落地检查 JDK 版本执行发行包内jdk/bin/java -version或JAVA_HOME指向的 java应输出包含11.0.23的版本信息在 Linux 下也可用./bin/opensearch启动日志中的 JVM 行确认。检查 Netty / BouncyCastle 版本查看lib目录下的netty-*4.1.110.Final.jar与bc-*-fips-1.78.1.jar1.3.x 分支的 BC FIPS 命名或在启用TRACE日志级别后观察 SSL 提供者注册日志应显示BouncyCastleFipsProvider与BouncyCastleJsseProvider已注册。运行传输层回归测试对源码构建场景可针对 Netty 模块执行测试构建入口见 gradlew例如./gradlew :modules:transport-netty4:test验证 HTTP/2、请求大小限制等关键路径对应测试见 modules/transport-netty4/src/internalClusterTestSSL 密钥解析路径的单元测试见 libs/ssl-config/src/test/java/org/opensearch/common/ssl/PemUtilsTests.java。升级建议与注意事项FIPS 环境若集群启用 FIPS 模式配置参考 distribution/src/config/fips_java.security本次 BouncyCastle 升级属于必修项且升级后应复测 PEM 加密私钥的加载PemUtils路径避免 FIPS approved-only 限制引发的NoSuchAlgorithmException该行为在 PemUtils.java 注释中有明确说明。安全基线三项升级合计覆盖了 2024 年上半年公开披露的多个安全公告含 3 个 BouncyCastle CVE建议运行 1.3.17 之前版本的集群尽快规划升级1.3.x 分支后续的维护版本见 release-notes 目录下的 1.3.18 记录可保持滚动跟进。无需配置变更本版本不含配置语义调整升级后原opensearch.yml、证书与密钥文件均可原样复用。分支版本差异1.3.x 分支的依赖版本BC 1.78.1、Netty 4.1.110与主线BC FIPS 2.x、Netty 4.2.x见 gradle/libs.versions.toml不同源评估时务必以目标分支的发布说明为准。小结OpenSearch 1.3.17 是一次小而关键的安全维护版本Temurin 11.0.23 补齐了 JDK 季度安全补丁BouncyCastle 1.78.1 封堵了三个已披露的 FIPS 组件 CVENetty 4.1.110 收紧了网络层稳定性。对于 1.3.x 长期维护分支的生产集群本次升级成本低无配置与 API 变更、收益明确安全面收敛建议纳入例行升级窗口同时可借助仓库中 distribution/build.gradle、libs/ssl-config 与 modules/transport-netty4 的源码与测试深入理解每次依赖升级在运行时链路中的具体位置与影响边界。赞分享搜索引擎全文检索可观测性数据分析【免费下载链接】OpenSearch Open source distributed and RESTful search engine.项目地址https://gitcode.com/gh_mirrors/op/OpenSearch点击查看免费下载相关推荐OpenSearch 1.3.15 版本发布解析Netty 与 Kerby 依赖升级全解读OpenSearch 1.3.15 版本发布解析Netty 与 Kerby 依赖升级全解读 OpenSearch 1.3.15 是 1.3.x 长期维护分支上搜索引擎全文检索可观测性数据分析OpenSearch 1.3.12 版本发布解析Bouncy Castle、Netty 与 OpenJDK 依赖升级全解读OpenSearch 1.3.12 版本发布解析Bouncy Castle、Netty 与 OpenJDK 依赖升级全解读 导读 本文以 OpenSearch搜索引擎全文检索可观测性数据分析OpenSearch 1.3.8 发布说明深度解析Netty 升级、Tika 2.5.0 与依赖治理全览OpenSearch 1.3.8 发布说明深度解析Netty 升级、Tika 2.5.0 与依赖治理全览 本文以 release notes/opensear搜索引擎全文检索可观测性数据分析创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考