2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Unsafe legacy renegotiation disabled.

Posted at

はじめに

node.js 16が2023年9月11日にサポート終了することに伴いnode.js 18にバージョンアップをおこなった。その際に発生した事象の対応方法についてまとめる。

発生事象

axiosで他システムとの通信時に下記のエラーが発生した。

EPROTO B8150000:error:0A000152:SSL routines:final_renegotiate:unsafe legacy renegotiation disabled

エラーの内容としては、危険なSSLのリゴシネーションが拒否されているとのこと。
node.js 18以前はSSLのリゴシネーションがデフォルトで許可されていたが、CVE-2009-3555の脆弱性に対処するためにデフォルトで許可しないように対応されたことが原因となっている。全ての通信でSSLのリゴシネーションの許可が必要になる訳ではないので、必要に応じて対処してあげる必要がある。

対応策

バージョンアップ後に動作確認を行ったところ、axiosの引数にhttpsAgentがあるので、Agentを生成してsecureOptions
crypto.constants.SSL_OP_LEGACY_SERVER_CONNECTを設定してあげることで従来通りの通信ができるようになる。

axios.js
import crypto from 'crypto';
import https from 'https';


const allowLegacyRenegotiationforNodeJsOptions = {
  httpsAgent: new https.Agent({
    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' },
  });
}

参考

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?