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

Node.js请求无法验证首个证书且npm无法安装包问题求助

解决跨语言SSL证书验证失败问题

核心原因

这类在Node.js、Python中均出现的Unable to verify the first certificate错误,本质是系统或网络环境的SSL根证书未正确配置——比如身处公司内网使用代理时,代理的自签名CA证书未被加入系统信任列表,或是本地系统根证书库缺失必要的根证书。

分步解决方案

1. 确认网络环境

  • 检查是否使用公司内网代理:若是,联系IT部门获取代理的自签名CA证书(通常为.crt或.pem格式)。
  • 测试直连外网:关闭代理后尝试npm安装或发起请求,验证是否是代理导致的问题。

2. 系统层面信任CA证书(推荐,根治问题)

这是最稳妥的方式,无需为每个工具单独配置:

Windows系统

  1. 右键CA证书文件,选择「安装证书」
  2. 选择「本地计算机」,点击「下一步」
  3. 选择「将所有证书放入下列存储」,点击「浏览」
  4. 选中「受信任的根证书颁发机构」,完成导入

macOS系统

  1. 双击CA证书文件,打开「钥匙串访问」
  2. 将证书拖入「系统」钥匙串
  3. 右键证书选择「显示简介」,把「信任」设置为「始终信任」

Linux系统(以Ubuntu为例)

  1. 将CA证书复制到/usr/local/share/ca-certificates/目录
  2. 执行命令:sudo update-ca-certificates

3. 单工具临时配置(仅测试用,不推荐长期使用)

若暂时无法配置系统证书,可临时关闭SSL验证,但存在安全风险:

Node.js(fetch/axios)

  • axios请求添加证书跳过配置:
const https = require('https');
axios.get('https://目标地址', {
  httpsAgent: new https.Agent({ rejectUnauthorized: false })
})
  • fetch借助https模块配置:
const https = require('https');
const agent = new https.Agent({ rejectUnauthorized: false });
fetch('https://目标地址', { agent })
  • npm临时关闭严格SSL验证:
npm config set strict-ssl false

用完记得恢复:npm config set strict-ssl true

Python requests

import requests
requests.get('https://目标地址', verify=False)

注意:会触发安全警告,生产环境禁止使用

4. 排查证书链完整性

若系统证书配置正常,需检查目标网站的证书链是否完整:

  • 用SSL检测工具检查目标网站的证书链是否包含中间证书
  • 若为自建服务,确保配置了完整的证书链(根证书+中间证书+域名证书)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 15:27:02