You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

公司电脑执行npm install时出现SSL协议错误如何解决?

解决NPM拉取资源时出现EPROTO SSL错误的方案(公司内网环境)

问题场景

使用公司配发的联想P15s(Windows 10系统),执行npm install拉取任何资源时均报错:

请求https://registry.npmjs.org/@angular%2fcli失败,原因:write EPROTO 10540000:error:0A000152:SSL routines:final_renegotiate:unsafe legacy renegotiation disabled:c:\ws\deps\openssl\openssl\ssl\statem\extensions.c:922:

npm init可正常运行,已尝试以下操作但均无效:

  • 检查代理设置,确认无代理配置
  • 通过Windows安装程序、NVM多次卸载重装Node.js(19.4/18/17/16版本)及对应NPM
  • 关闭strict-ssl:Node v17+仍报相同错误,Node v16出现SELF_SIGNED_CERT_IN_CHAIN错误
  • 在另一台公司全新电脑测试,仍出现EPROTO错误
  • 设置NPM源为http://registry.npmjs.org/
  • 设置NODE_TLS_REJECT_UNAUTHORIZED=0
  • 下载并配置DigiCertHighAssuranceEVRootCA证书路径

排查方向与解决方案

1. 确认公司内网的SSL拦截/隐形代理

多数公司会部署透明代理或SSL流量拦截设备,这类设备不会在系统代理设置中显示,但会改写SSL连接逻辑。处理方式:

  • 联系IT部门确认公司是否有SSL拦截政策,获取内网专用根证书
  • 将IT提供的根证书安装到Windows「受信任根证书颁发机构」:
    1. 双击证书文件,点击「安装证书」
    2. 选择「本地计算机」,点击「下一步」
    3. 选择「将所有证书放入下列存储」,点击「浏览」
    4. 选中「受信任的根证书颁发机构」,完成安装

2. 配置NPM使用公司根证书

若IT提供了.pem格式的根证书文件,直接配置NPM引用该证书:

npm config set cafile "C:\实际路径\公司根证书.pem"

替换为证书文件的绝对路径后,重新执行npm install。

3. 启用OpenSSL旧版协商兼容

错误提示中的unsafe legacy renegotiation disabled,是因为Node.js v17+使用的OpenSSL版本默认禁用了旧版SSL协商规则,而公司拦截设备可能依赖该规则。可通过环境变量开启兼容:

  • 临时生效:在命令行执行
set NODE_OPTIONS=--openssl-legacy-provider

之后再运行npm install

  • 永久生效:在Windows系统环境变量中添加NODE_OPTIONS,值设为--openssl-legacy-provider

4. 切换公司内部NPM镜像源

很多公司会搭建内部NPM镜像源(如基于CNPM、Verdaccio),联系IT确认内部源地址后替换registry:

npm config set registry https://公司内部镜像地址/

若内部源为http协议,需设置strict-ssl为false(仅针对可信内部源):

npm config set strict-ssl false

5. 排查企业安全软件拦截

部分企业级杀毒软件、防火墙会拦截SSL流量,可在IT授权下临时关闭网络保护功能,测试是否能正常拉取资源。若确认是安全软件导致,联系IT添加Node.js和NPM的信任规则。

内容的提问来源于stack exchange,提问作者rebecka.th

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 11:10:19