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

Node 16环境下npm拒绝信任已配置的自签名CA证书问题

解决Node 16环境下npm自定义CA证书不生效问题

失效原因

Node 16配套的npm v7及以上版本调整了内置的证书校验逻辑,默认不读取NODE_EXTRA_CA_CERTS环境变量,也不会优先加载系统信任的CA证书,因此Node 12中可用的配置方案在新版本中无法生效。

可行解决方案

以下方案均不会关闭全局证书校验,仅让npm信任指定的自定义CA证书:

  • 方案1:npm单独配置信任自定义CA证书(最稳妥,适配所有场景)

    该配置仅作用于npm,不会影响其他Node.js应用:

    • 全局生效:执行命令 npm config set cafile /path/to/my-ca-cert.crt
    • 仅当前项目生效:在项目根目录的.npmrc文件中添加一行 cafile=/path/to/my-ca-cert.crt
      如果你有多个需要信任的自定义CA,将所有证书的PEM格式内容拼接存入同一个.crt文件,再配置到cafile参数即可。
  • 方案2:配置npm使用系统CA信任栈

    你已经将自定义CA添加到系统信任列表,可直接配置npm调用系统CA库完成校验:
    执行命令 npm config set use-openssl-ca true
    配置完成后npm会复用系统已信任的所有CA证书,无需单独导入自定义CA。

  • 方案3:单次命令临时生效

    如果不需要永久修改配置,可在执行npm install时携带参数临时生效:

    • 单独指定CA证书:npm install --cafile /path/to/my-ca-cert.crt
    • 临时使用系统CA栈:npm install --use-openssl-ca

验证配置

配置完成后可执行npm config list查看对应参数是否配置正确,再执行npm install即可解决SELF_SIGNED_CERT_IN_CHAIN报错。

注意:请勿使用npm config set strict-ssl false配置,该操作会关闭所有HTTPS证书校验,存在安全风险。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 09:45:02