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

配置Azure Artifacts源后npm install/publish遇SSL错误求助

解决Node.js连接Azure Artifacts时的SSL不安全重协商错误

问题根源

Node.js 18及以上版本搭载的OpenSSL 3.0默认禁用了不安全的旧版SSL重协商机制,而你的Azure Artifacts服务器仍在使用不兼容的SSL配置,导致npm请求失败。npm config set strict-ssl false仅关闭证书校验,无法解决重协商层面的兼容性问题。

可行解决方案

方案1:临时通过环境变量兼容旧版重协商

执行npm命令前,先设置Node.js启用旧版SSL提供者:

export NODE_OPTIONS="--openssl-legacy-provider"
npm install
# 发布时同理
export NODE_OPTIONS="--openssl-legacy-provider"
npm publish

若需要长期生效,可将环境变量写入shell配置文件(如~/.zshrc或~/.bash_profile):

echo 'export NODE_OPTIONS="--openssl-legacy-provider"' >> ~/.zshrc
source ~/.zshrc

方案2:修改OpenSSL全局配置

  1. 找到macOS下Homebrew安装的OpenSSL配置文件,路径通常为/opt/homebrew/etc/openssl@3/openssl.cnf
  2. 打开文件,定位到[openssl_init]段,添加或修改:
    [openssl_init]
    ssl_conf = ssl_sect
    
  3. 在文件末尾追加以下配置:
    [ssl_sect]
    system_default = system_default_sect
    
    [system_default_sect]
    Options = UnsafeLegacyRenegotiation
    
  4. 保存文件后重启终端,再执行npm命令。

方案3:降级Node.js版本(应急方案)

若上述方案无效,可临时降级到Node.js 16.x版本(该版本使用OpenSSL 1.1.1,默认支持旧版重协商),借助nvm快速切换:

nvm install 16
nvm use 16
npm install

注意事项

  • --openssl-legacy-provider会降低SSL安全等级,仅建议在信任的内部服务器(如你的Azure Artifacts)场景下使用。
  • 优先联系运维团队升级Azure Artifacts服务器的SSL配置,移除对旧版重协商的依赖,从根源解决问题。

内容的提问来源于stack exchange,提问作者Bhavesh

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 00:50:56