Node.js v24.21.0 LTS:升级 OpenSSL 3.5.8
2026-09-08, Version 24.21.0 'Krypton' (LTS), @aduh95
推荐理由
OpenSSL 升级涉及加密安全基座变动,crypto 模块新增 STORE loader 改变了密钥加载方式,建议开发者评估兼容性并及时升级以获取最新安全修复。
Notable Changes
显著变更
- [71106e1f17] - crypto: update root certificates to NSS 3.126 (Node.js GitHub Bot) #65495
- [afca0a912d] - (SEMVER-MINOR) crypto: support loading private keys through STORE loaders (Filip Skokan) #63949
- [6274fccbd9] - deps: update OpenSSL to 3.5.8 (Node.js GitHub Bot) #65542
- [53cba013c7] - deps: update Undici to 7.29.1 (Node.js GitHub Bot) #65789
- [0529772798] - (SEMVER-MINOR) lib,src: improve histogram implementation (James M Snell) #65024
- [41c7062b81] - (SEMVER-MINOR) net: improve performance of net.BlockList (James M Snell) #64974
- [5197b5a3c5] - (SEMVER-MINOR) perf_hooks: add statistical hypothesis testing to histogram (James M Snell) #65416
- [35c635b032] - (SEMVER-MINOR) util: add non-throwing MIMEType.parse (James M Snell) #64965
- [71106e1f17] - crypto: 将根证书更新为 NSS 3.126 (Node.js GitHub Bot) #65495
- [afca0a912d] - (SEMVER-MINOR) crypto: 支持通过 STORE 加载器加载私钥 (Filip Skokan) #63949
- [6274fccbd9] - deps: 将 OpenSSL 更新为 3.5.8 (Node.js GitHub Bot) #65542
- [53cba013c7] - deps: 将 Undici 更新为 7.29.1 (Node.js GitHub Bot) #65789
- [0529772798] - (SEMVER-MINOR) lib,src: 改进直方图实现 (James M Snell) #65024
- [41c7062b81] - (SEMVER-MINOR) net: 提升 net.BlockList 的性能 (James M Snell) #64974
- [5197b5a3c5] - (SEMVER-MINOR) perf_hooks: 向直方图添加统计假设检验 (James M Snell) #65416
- [35c635b032] - (SEMVER-MINOR) util: 添加非抛出异常的 MIMEType.parse (James M Snell) #64965
Commits
提交记录
- [84d706cb9b] - assert: improve documentation wording (Kamal Rawal) #64953
- [90d127db33] - (SEMVER-MINOR) benchmark: add --analyze mode to compare.js (James M Snell) #65416
- [ad1d7884c3] - benchmark: add test-only and mock timers cases (Luan Muniz) #64097
- [1d8f045914] - benchmark: apply highWaterMark in webstreams pipe-to (Matteo Collina) #65138
- [ed7ba3c993] - benchmark: complete the sqlite is-transaction fix (Edy Silva) #65218
- [c8837e1aa3] - benchmark: add test runner hooks and options (Luan Muniz) #63754
- [2ba8661e23] - buffer: prevent string write offset overflow (Matteo Collina) #65043
- [cc9ee6c2ae] - buffer: treat detached ArrayBuffers as empty (Archkon) #64504
- [5a5d73e4c5] - build: pass target architecture to small-icu genccode (ulofiai) #65095
- [273e72d1a5] - build: deprecate always enabled --enable-static (Chengzhong Wu) #65103
- [89a67246e3] - build: check FIPS option value in node.gyp (Filip Skokan) #64982
- [2d21f41cd5] - build: handle malformed OpenSSL macros (Filip Skokan) #64982
- [f62bc0f862] - build,win: add PGO workload scripts (Stefan Stojanovic) #63696
- [33d0c7dc12] - child_process: keep SIGWINCH from killing on Win (Kirill Saied) #64510
- [71106e1f17] - crypto: update root certificates to NSS 3.126 (Node.js GitHub Bot) #65495
- [419af8b86d] - crypto: fix missing error checks on ASN1_STRING_to_UTF8() (Nora Dossche) #65200
- [8029383f3f] - crypto: use available BoringSSL APIs (Filip Skokan) #65423
- [a9bd780e19] - crypto: remove obsolete BoringSSL shims (Filip Skokan) #65423
- [7defefad3f] - crypto: read WebCrypto inputs through primordials (Filip Skokan) #65115
- [6ed1e38627] - crypto: fix disabling FIPS mode (Filip Skokan) #64982
- [afca0a912d] - (SEMVER-MINOR) crypto: support loading private keys through STORE loaders (Filip Skokan) #63949
- [9b9dd6e9cf] - debugger: wait for target startup (Filip Skokan) #65194
- [07faaeeffd] - deps: update corepack to 0.36.0 (Node.js GitHub Bot) #65653
- [53cba013c7] - deps: update undici to 7.29.1 (Node.js GitHub Bot) #65789
- [0268ca547c] - deps: update archs files for openssl-3.5.8 (Node.js GitHub Bot) #65542
- [6274fccbd9] - deps: upgrade openssl sources to openssl-3.5.8 (Node.js GitHub Bot) #65542
- [6bdcd121fa] - deps: update zlib to 1.3.2.1-motley-8002e91 (Node.js GitHub Bot) #65316
- [c2aa446b6d] - deps: update simdjson to 4.6.7 (Node.js GitHub Bot) #65318
- [3e58e48ea8] - deps: update googletest to 49495eacfdbda3f4b6ba219923fedbb2e3f99376 (Node.js GitHub Bot) #65317
- [670b3665c0] - deps: cherry-pick libuv/libuv@e640dc9 (ulofiai) #65118
- [ca1c67b021] - deps: float ICU-23262 patch for icu78 (René) #64678
- [4ad043b0aa] - deps: enable AVX-512 OpenSSL asm with clang (Daniel Lemire) #65136
- [96b4af109b] - deps: update googletest to d89aac5f0dd4021198d903d39de16f896726de21 (Node.js GitHub Bot) #65153
- [774f663c56] - dgram: don't swallow bind errors when callback is provided (armanmikoyan) #62602
- [94b118d62e] - diagnostics_channel: validate before channel activation (Trivikram Kamat) #65313
- [09788665bd] - dns: validate address type in lookupService (Lazizbek Ergashev) #64878
- [15f95fc0e2] - dns: validate port range in setServers() (René) #65021
- [37b9e9a154] - dns: fix crash on setServers with port 0 (Lazizbek Ergashev) #65009
- [cd6205fa0d] - doc: update AHAFS reference link (Taeuk Ha) #65481
- [0e6f9ae42e] - doc: fix property names in os.networkInterfaces() example (Jihwan) #65469
- [034a827b41] - doc: fix broken links in cli.md (Donghoon Kang) #65412
- [eb364621d4] - doc: remove outdated WASI version fallback (이혜미) #65303
- [b13f425bf8] - doc: fix broken GYP link in n-api.md (Donghoon Kang) #65413
- [45c4011067] - doc: document that an empty OPENSSL_CONF skips config loading (Orgad Shaneh) #64949
- [fde6776c5f] - doc: fix broken TLS security level example (soreavis) #65391
- [290c1fec04] - doc: clarify socket destroyed behavior (Dayun) #65395
- [a7e8269947] - doc: update outdated nodejs.org guide links (Donghoon Kang) #65394
- [7809f11249] - doc: clarify that ipv4 mapped to ipv6 are classified as ipv6 (Vedant Kulkarni) #62117
- [64cd3a6e95] - doc: clarify how fs.Dirent file types are determined (soreavis) #64532
- [9b92fdce14] - doc: update security release prepare command (Rafael Gonzaga) #64699
- [6f9b9df3c1] - doc: clarify copyFile symlink behavior (T) #62941
- [2480acb550] - doc: document setRawMode write access on Windows (Erik Demaine) #63856
- [a1e9c3a5db] - doc: add missing return types in fs.md (Chaseton Collins) #65307
- [4533572040] - doc: add missing return types in buffer.md (Yuya Inoue) #65308
- [39ecedbbd2] - doc: fix lint clean command (greenhead) #65274
- [0b1fb8fcd8] - doc: fix typo in onboarding.md (서울민트초코) #65295
- [3165b5d38a] - doc: add missing added: tags to fs.lchmod (Lazizbek Ergashev) #65283
- [113b808e59] - doc: fix SQLite changeset constant descriptions (greenhead) #65265
- [c3eb51d5a1] - doc: document open pull request limit (Matteo Collina) #65250
- [d7accdcd52] - doc: document http2 header constants (Harjoth Khara) #64548
- [f47111416f] - doc: create ai-guidelines and include to CONTRIBUTING (Rafael Gonzaga) #62105
- [c3b120e737] - doc: update synopsis (Augustin Mauroy) #65171
- [39f4c831fd] - doc: fix broken internal links (greenhead) #64901
- [be25cdd69e] - doc: report proper return type on urlPattern.test (Brian Muenzenmeyer) #64831
- [1bf7737810] - doc: fix permission documentation examples (greenhead) #64897
- [b7932e68a1] - doc: document sqlite parameter binding (Guilherme Araújo) #65089
- [5234a5169c] - doc: finalize statements in sqlite examples (Guilherme Araújo) #65088
- [39ea929da7] - doc: document quic stopSending() and resetStream() (Issac) #64888
- [2ba198db73] - doc: clarify sqlite bare parameter default (Sumit Kumar Das) #62009
- [314f9b200f] - doc: remove usage of util.inherits (Augustin Mauroy) #60817
- [d82a61662c] - doc: fix grammar in worker_threads.md (이혜미) #64913
- [44c0c8ff5b] - doc: clarify OpenSSL FIPS configuration (Filip Skokan) #64982
- [9b2ca70e0d] - doc: remove --expose-gc flag from CLI documentation (Dario Piotrowicz) #58909
- [a0a12397b9] - doc: document ArrayBuffer support in pbkd2Sync (kyungrae2002) #64976
- [b48699e077] - doc: correct default highWaterMark values (Yilong Li) #64617
- [0312ee133c] - esm: avoid super-linear data URL MIME regex (Sumit Kumar Das) #61951
- [cd84d55c81] - esm: only register text format when enabled (Efe Karasakal) #64992
- [c0a8ef611e] - esm: fix wasm import name in error message (이혜미) #64950
- [e6c34f90c2] - events: inline iterationCondition hybrid dispatch closure (Szymon Łągiewka) #64473
- [6ee4b40c91] - events: inline createEvent hybrid dispatch closure (Szymon Łągiewka) #64473
- [367549eed5] - fs: use sized reads for large files in readFileUtf8 (Shelley Vohr) #65328
- [8a5b1ae4c2] - fs: fix realpath of namespaced drive paths (Jason Zhang) #65378
- [c9233b950d] - fs: fix glob early return skipping sibling entries (Srinu desetti) #64895
- [bc54dd8905] - fs: pass symlink type in cp when filter is provided (Jerry Zhao) #62654
- [84d706cb9b] - assert: 改进文档措辞 (Kamal Rawal) #64953
- [90d127db33] - (SEMVER-MINOR) benchmark: 向 compare.js 添加 --analyze 模式 (James M Snell) #65416
- [ad1d7884c3] - benchmark: 添加仅测试和模拟计时器用例 (Luan Muniz) #64097
- [1d8f045914] - benchmark: 在 webstreams pipe-to 中应用 highWaterMark (Matteo Collina) #65138
- [ed7ba3c993] - benchmark: 完成 sqlite is-transaction 修复 (Edy Silva) #65218
- [c8837e1aa3] - benchmark: 添加测试运行器钩子和选项 (Luan Muniz) #63754
- [2ba8661e23] - buffer: 防止字符串写入偏移量溢出 (Matteo Collina) #65043
- [cc9ee6c2ae] - buffer: 将分离的 ArrayBuffers 视为空 (Archkon) #64504
- [5a5d73e4c5] - build: 将目标架构传递给 small-icu genccode (ulofiai) #65095
- [273e72d1a5] - build: 弃用始终启用的 --enable-static (Chengzhong Wu) #65103
- [89a67246e3] - build: 检查 node.gyp 中的 FIPS 选项值 (Filip Skokan) #64982
- [2d21f41cd5] - build: 处理格式错误的 OpenSSL 宏 (Filip Skokan) #64982
- [f62bc0f862] - build,win: 添加 PGO 工作负载脚本 (Stefan Stojanovic) #63696
- [33d0c7dc12] - child_process: 防止 Win 上 SIGWINCH 导致终止 (Kirill Saied) #64510
- [71106e1f17] - crypto: 将根证书更新为 NSS 3.126 (Node.js GitHub Bot) #65495
- [419af8b86d] - crypto: 修复 ASN1_STRING_to_UTF8() 上缺失的错误检查 (Nora Dossche) #65200
- [8029383f3f] - crypto: 使用可用的 BoringSSL API (Filip Skokan) #65423
- [a9bd780e19] - crypto: 移除过时的 BoringSSL 适配层 (Filip Skokan) #65423
- [7defefad3f] - crypto: 通过 primordials 读取 WebCrypto 输入 (Filip Skokan) #65115
- [6ed1e38627] - crypto: 修复禁用 FIPS 模式的问题 (Filip Skokan) #64982
- [afca0a912d] - (SEMVER-MINOR) crypto: 支持通过 STORE 加载器加载私钥 (Filip Skokan) #63949
- [9b9dd6e9cf] - debugger: 等待目标启动 (Filip Skokan) #65194
- [07faaeeffd] - deps: 将 corepack 更新到 0.36.0 (Node.js GitHub Bot) #65653
- [53cba013c7] - deps: 将 undici 更新到 7.29.1 (Node.js GitHub Bot) #65789
- [0268ca547c] - deps: 更新 openssl-3.5.8 的 archs 文件 (Node.js GitHub Bot) #65542
- [6274fccbd9] - deps: 将 openssl 源码升级到 openssl-3.5.8 (Node.js GitHub Bot) #65542
- [6bdcd121fa] - deps: 将 zlib 更新到 1.3.2.1-motley-8002e91 (Node.js GitHub Bot) #65316
- [c2aa446b6d] - deps: 将 simdjson 更新到 4.6.7 (Node.js GitHub Bot) #65318
- [3e58e48ea8] - deps: 将 googletest 更新到 49495eacfdbda3f4b6ba219923fedbb2e3f99376 (Node.js GitHub Bot) #65317
- [670b3665c0] - deps: cherry-pick libuv/libuv@e640dc9 (ulofiai) #65118
- [ca1c67b021] - deps: 浮动应用 icu78 的 ICU-23262 补丁 (René) #64678
- [4ad043b0aa] - deps: 启用 clang 的 AVX-512 OpenSSL 汇编代码 (Daniel Lemire) #65136
- [96b4af109b] - deps: 将 googletest 更新到 d89aac5f0dd4021198d903d39de16f896726de21 (Node.js GitHub Bot) #65153
- [774f663c56] - dgram: 当提供回调时不要吞掉 bind 错误 (armanmikoyan) #62602
- [94b118d62e] - diagnostics_channel: 在通道激活前进行验证 (Trivikram Kamat) #65313
- [09788665bd] - dns: 在 lookupService 中验证地址类型 (Lazizbek Ergashev) #64878
- [15f95fc0e2] - dns: 在 setServers() 中验证端口范围 (René) #65021
- [37b9e9a154] - dns: 修复 setServers 传入端口 0 时的崩溃问题 (Lazizbek Ergashev) #65009
- [cd6205fa0d] - doc: 更新 AHAFS 引用链接 (Taeuk Ha) #65481
- [0e6f9ae42e] - doc: 修复 os.networkInterfaces() 示例中的属性名称 (Jihwan) #65469
- [034a827b41] - doc: 修复 cli.md 中的失效链接 (Donghoon Kang) #65412
- [eb364621d4] - doc: 移除过时的 WASI 版本回退机制 (이혜미) #65303
- [b13f425bf8] - doc: 修复 n-api.md 中失效的 GYP 链接 (Donghoon Kang) #65413
- [45c4011067] - doc: 说明空的 OPENSSL_CONF 会跳过配置加载 (Orgad Shaneh) #64949
- [fde6776c5f] - doc: 修复失效的 TLS 安全级别示例 (soreavis) #65391
- [290c1fec04] - doc: 澄清 socket 被销毁的行为 (Dayun) #65395
- [a7e8269947] - doc: 更新过时的 nodejs.org 指南链接 (Donghoon Kang) #65394
- [7809f11249] - doc: 澄清映射到 ipv6 的 ipv4 被归类为 ipv6 (Vedant Kulkarni) #62117
- [64cd3a6e95] - doc: 澄清 fs.Dirent 文件类型的确定方式 (soreavis) #64532
- [9b92fdce14] - doc: 更新安全版本发布准备命令 (Rafael Gonzaga) #64699
- [6f9b9df3c1] - doc: 澄清 copyFile 的符号链接行为 (T) #62941
- [2480acb550] - doc: 文档化 Windows 上 setRawMode 的写入访问权限 (Erik Demaine) #63856
- [a1e9c3a5db] - doc: 在 fs.md 中补充缺失的返回类型 (Chaseton Collins) #65307
- [4533572040] - doc: 在 buffer.md 中补充缺失的返回类型 (Yuya Inoue) #65308
- [39ecedbbd2] - doc: 修复 lint clean 命令 (greenhead) #65274
- [0b1fb8fcd8] - doc: 修复 onboarding.md 中的拼写错误 (서울민트초코) #65295
- [3165b5d38a] - doc: 为 fs.lchmod 补充缺失的 added: 标签 (Lazizbek Ergashev) #65283
- [113b808e59] - doc: 修复 SQLite changeset 常量描述 (greenhead) #65265
- [c3eb51d5a1] - doc: 文档化开放拉取请求限制 (Matteo Collina) #65250
- [d7accdcd52] - doc: 文档化 http2 头部常量 (Harjoth Khara) #64548
- [f47111416f] - doc: 创建 ai-guidelines 并包含在 CONTRIBUTING 中 (Rafael Gonzaga) #62105
- [c3b120e737] - doc: 更新概要 (Augustin Mauroy) #65171
- [39f4c831fd] - doc: 修复损坏的内部链接 (greenhead) #64901
- [be25cdd69e] - doc: 报告 urlPattern.test 的正确返回类型 (Brian Muenzenmeyer) #64831
- [1bf7737810] - doc: 修复权限文档示例 (greenhead) #64897
- [b7932e68a1] - doc: 记录 sqlite 参数绑定 (Guilherme Araújo) #65089
- [5234a5169c] - doc: 完善 sqlite 示例中的语句 (Guilherme Araújo) #65088
- [39ea929da7] - doc: 记录 quic stopSending() 和 resetStream() (Issac) #64888
- [2ba198db73] - doc: 澄清 sqlite 裸参数默认值 (Sumit Kumar Das) #62009
- [314f9b200f] - doc: 移除 util.inherits 的使用 (Augustin Mauroy) #60817
- [d82a61662c] - doc: 修复 worker_threads.md 中的语法错误 (이혜미) #64913
- [44c0c8ff5b] - doc: 澄清 OpenSSL FIPS 配置 (Filip Skokan) #64982
- [9b2ca70e0d] - doc: 从 CLI 文档中移除 --expose-gc 标志 (Dario Piotrowicz) #58909
- [a0a12397b9] - doc: 记录 pbkd2Sync 中的 ArrayBuffer 支持 (kyungrae2002) #64976
- [b48699e077] - doc: 更正默认的 highWaterMark 值 (Yilong Li) #64617
- [0312ee133c] - esm: 避免超线性的数据 URL MIME 正则表达式 (Sumit Kumar Das) #61951
- [cd84d55c81] - esm: 仅在启用时注册文本格式 (Efe Karasakal) #64992
- [c0a8ef611e] - esm: 修复错误消息中的 wasm 导入名称 (이혜미) #64950
- [e6c34f90c2] - events: 内联 iterationCondition 混合分发闭包 (Szymon Łągiewka) #64473
- [6ee4b40c91] - events: 内联 createEvent 混合分发闭包 (Szymon Łągiewka) #64473
- [367549eed5] - fs: 在 readFileUtf8 中对大文件使用定长读取 (Shelley Vohr) #65328
- [8a5b1ae4c2] - fs: 修复命名空间驱动器路径的 realpath (Jason Zhang) #65378
- [c9233b950d] - fs: 修复 glob 提前返回导致跳过同级条目的问题 (Srinu desetti) #64895
- [bc54dd8905] - fs: 在提供 filter 时,cp 传递符号链接类型 (Jerry Zhao) #62654
更进一步:量化金融体系
看懂新闻只是起点——沿量化金融路径,把它变成能交付的工程能力