You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修复Node.js 17调用Sandbox Bluesnap时unsafe legacy renegotiation disabled报错

根因说明

Node 17默认升级了OpenSSL配置,禁用了不安全的SSL遗留重协商机制,你碰到的报错就是目标站点Bluesnap的沙箱环境还在使用这套已被废弃的不安全重协商逻辑,所以请求被Node默认拦截。你之前配置的rejectUnauthorized: false、NODE_TLS_REJECT_UNAUTHORIZED=0都是用于跳过证书合法性校验,和重协商规则无关,因此不生效。

临时解决方案

方案1:单请求单独配置(更安全,推荐)

在初始化https.Agent时额外添加secureOptions参数,单独给这个请求开放遗留重协商权限:

const https = require('https');
const { constants } = require('crypto');

// 发起请求的部分
fetch( // node-fetch
  'https://sandbox.bluesnap.com/services/2/payment-fields-tokens',
  {
    agent: new https.Agent({
      rejectUnauthorized: false,
      // 新增以下配置
      secureOptions: constants.SSL_OP_ALLOW_UNSAFE_LEGACY_RENEGOTIATION
    }),
    body, // 在其他位置定义
  }
);

方案2:全局生效配置

如果你的项目里有多处请求需要调用Bluesnap接口,可以在项目入口文件最顶部添加以下代码,全局开放遗留重协商权限:

const { constants } = require('crypto');
process.env.NODE_OPTIONS = `--tls-secure-options=${constants.SSL_OP_ALLOW_UNSAFE_LEGACY_RENEGOTIATION}`;

注意事项

上述配置仅为临时兼容方案,允许不安全遗留重协商存在中间人攻击风险,等Bluesnap侧完成SSL配置修复后请及时移除相关配置。

内容的提问来源于stack exchange,提问作者Rafael De Leon

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.23 15:18:07