Axios post SSL例程出错:final_renegotiate:禁用不安全的旧版重新协商

svdrlsy4  于 2023-10-18  发布在  iOS
关注(0)|答案(2)|浏览(359)

我收到以下错误:EPROTO B8150000:error:0A000152:SSL routines:final_renegotiate:unsafe legacy renegotiation disabled执行axios post请求时。

function makeRequest(url: string, data: object) {
  return axios({
    url,
    headers: {
      Accept: 'application/json',
      'Content-Type': 'application/json',
    },
    method: 'POST',
    data: { some: 'data' },
  });
}

我想知道的是,为什么在使用Postman时,API请求能够成功地对我正在调用的端点起作用。但当我使用节点/axios时就不行了,是否还有其他方法?(例如联系API端点所有者以更新其SSL/TLS设置)
我用node version 18.17.1
我找到了一个解决方案,但不推荐:

/**
 * Handle this problem with Node 18
 * write EPROTO B8150000:error:0A000152:SSL routines:final_renegotiate:unsafe legacy renegotiation disabled
 * see https://stackoverflow.com/questions/74324019/allow-legacy-renegotiation-for-nodejs/74600467#74600467
 **/
const allowLegacyRenegotiationforNodeJsOptions = {
  httpsAgent: new https.Agent({
    // for self signed you could also add
    // rejectUnauthorized: false,
    // allow legacy server
    secureOptions: crypto.constants.SSL_OP_LEGACY_SERVER_CONNECT,
  }),
};

function makeRequest(url: string, data: object) {
  return axios({
    ...allowLegacyRenegotiationforNodeJsOptions,
    url,
    headers: {
      Accept: 'application/json',
      'Content-Type': 'application/json',
    },
    method: 'POST',
    data: { some: 'data' },
  });
}
oxosxuxt

oxosxuxt1#

Postman可能是在开发模式下使用的。它可能会忽略错误。
你可以将你的API封装在cloudflare中(在互联网上搜索它),这样cloudflare的SSL就可以面向Web。
问题肯定出在服务器端。

myzjeezk

myzjeezk2#

我看到Node版本18默认禁用了不安全的旧版TLS重新协商,请参阅此link
因此,您可以尝试将httpsAgent对象的secureOptions选项设置为crypto.constants.SSL_OP_LEGACY_SERVER_PROTECT。它将允许Node在使用传统TLS重新协商时连接到API端点。
给您:

function makeRequest(url: string, data: object) {
  return axios({
    url,
    headers: {
      Accept: 'application/json',
      'Content-Type': 'application/json',
    },
    method: 'POST',
    data: { some: 'data' },
    httpsAgent: new https.Agent({
      secureOptions: crypto.constants.SSL_OP_LEGACY_SERVER_CONNECT,
    }),
  });
}

相关问题