解决方案
-
Node.js 应用:
-
从 Node.js v17+ 开始,底层升级到 OpenSSL 3.0,可能导致旧代码报错(如
ERR_OSSL_EVP_UNSUPPORTED
)。 -
通过以下命令启用旧算法支持:
bashnode --openssl-legacy-provider your_script.js
-
-
Vue应用
-
从 Node.js v17+ 开始,底层升级到 OpenSSL 3.0,可能导致旧代码报错(如
ERR_OSSL_EVP_UNSUPPORTED
)。 -
通过以下命令启用旧算法支持:
json"scripts": { "serve": "set NODE_OPTIONS=--openssl-legacy-provider & vue-cli-service serve", "build": "set NODE_OPTIONS=--openssl-legacy-provider & vue-cli-service build", "lint": "vue-cli-service lint" },
-
背景知识
OpenSSL 3.0 引入了 Provider(提供者) 机制,将加密算法按功能分成了不同的模块:
- 默认 Provider:包含符合现代安全标准的算法(如 SHA-2、AES 等)。
- Legacy Provider:包含旧版或不推荐使用的算法(如 MD5、DES、RIPEMD 等)。
- FIPS Provider:符合 FIPS 标准的算法。
出于安全考虑,OpenSSL 3.0 默认禁用了一些过时的算法。如果应用程序依赖这些旧算法,需显式启用 legacy provider
。