npm 不安全遗留重新协商已禁用 - 问题

use*_*585 7 node.js npm

运行 npm install create-react-app 时出现以下错误

Windows 10 节点 v18.13.0 npm v8.19.3

对https://registry.npmjs.org/npm的错误请求失败,原因:写入 EPROTO B8360300:错误:0A000152:SSL 例程:final_renegotiate:不安全的遗留重新协商已禁用:c:\ws\deps\openssl\openssl\ssl\statem \extensions.c:922

非常感谢任何帮助或解决方法。尝试了多种在线解决方案,到目前为止没有任何效果。

Lan*_*sby 7

我找到了一个“修复”。它适用于节点 v18.16.0。

请注意,这会完全禁用 SSL 验证,因此请谨慎使用。

编辑:我不知道这会在多大程度上导致或不会导致安全风险。不用说,使用风险自负,不要使用这个制作,ymmv,水湿了等等:)

首先,转到您遇到问题的证书的 URL。单击地址栏中的锁定图标并查看站点的证书信息。确切的步骤因浏览器而异,但请寻找一种将站点的证书链导出为 pem 文件的方法。确保您获得整个证书链,而不仅仅是网站的证书。将该文件复制到本地计算机并记下路径。

接下来,创建一个指向 pem 文件的环境变量。

export NODE_EXTRA_CA_CERTS=/path/to/file.pem

最后,创建一个名为的文件openssl.cnf并将以下内容粘贴到其中。就我而言,我将此文件放在项目的根目录下。

openssl_conf = openssl_init

[openssl_init]
ssl_conf = ssl_sect

[ssl_sect]
system_default = system_default_sect

[system_default_sect]
Options = UnsafeLegacyRenegotiation
Run Code Online (Sandbox Code Playgroud)

我不确定下一步是否有必要,因为我在 python 线程中找到了它,但我还为上面创建的 conf 文件设置了一个环境变量。如果有人在评论中指出此步骤是否必要,我将不胜感激。我当时就懒得去测试了。

感谢评论中回答这个问题的人!

接下来,创建一个指向 openssl.cnf 的环境变量:

export OPENSSL_CONF=/path/to/openssl.cnf


小智 1

这可能是因为您正在使用 VPN,或者您使用的是公司计算机,请尝试禁用 VPN 或联系您的公司以获取更多帮助。