--openssl-legacy-provider 详解

2,815 阅读1分钟

1、含义解析

  • openssl,open secure socket layer,即开源的安全套接字层,一个提供加密功能的库
  • legacy,(计算机系统或产品)已停产的
  • provider,提供者

所以,--openssl-legacy-provider 意思就是安全套接字层的旧版实现

2、背景

Node.js v17版本中包含了 OpenSSL 3.0,在3.0版本中 md4不再被允许使用,在node 17版本之前使用 md4方法不会报错,但 v17之后将抛出一个 error code 为 ERR_OSSL_EVP_UNSUPPORTED 的错误信息。

image.png

image.png

3、使用

所以在node升级高版本后,为了代码的兼容,可以增加 --openssl-legacy-provider 标志,用法就是

node --openssl-legacy-provider xx.js,就是告诉nodejs,别使用OpenSSL 3.0,还使用老版的 OpenSSL,工程化的项目一般放到script里, 类似于

image.png

注:上图意为将nodejs中的环境变量 NODE_OPTIONS设置为--openssl-legacy-provider (变量设置在当前终端生效)