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

使用Axios连接服务器时遇unable to get issuer certificate错误(已配置自定义CA)

解决Axios unable to get issuer certificate 错误(已配置自定义CA)

1. 检查自定义CA的完整性

要确保你提供的CA文件包含完整的证书链,不能只放根CA。很多服务器证书是由中间CA签发的,只提供根CA的话,Axios无法完成完整的信任链验证。

  • 用openssl s_client -connect your-server:port命令查看服务器的证书链,对比你手中的CA文件,确认链内所有证书都已包含。
  • 如果缺少中间CA,将中间CA与根CA合并到同一个PEM文件即可(顺序不影响,Axios会自动识别)。

2. 确认Axios的CA配置是否正确

不同环境下Axios配置CA的方式存在差异,以下是常见场景的正确操作:

浏览器端Axios

浏览器环境下的Axios无法直接指定CA,需先让浏览器信任你的自定义CA:

  • 打开浏览器证书管理页面,导入自定义CA并设置为「信任该证书颁发机构」。

Node.js端Axios

Node.js环境下必须通过httpsAgent配置CA,示例代码如下:

const axios = require('axios');
const https = require('https');
const fs = require('fs');

// 读取自定义CA文件
const ca = fs.readFileSync('/path/to/your/custom-ca.pem');

const httpsAgent = new https.Agent({
  ca: ca,
  // 默认值为true,无需修改,确保服务器主机名验证开启
  rejectUnauthorized: true
});

axios.get('https://your-server-url', { httpsAgent })
  .then(res => console.log(res.data))
  .catch(err => console.error(err));

如果你的CA是DER格式,需先转为PEM:openssl x509 -inform der -in custom-ca.cer -out custom-ca.pem

3. 排查Node.js的CA存储干扰

Node.js可能优先使用系统内置CA,或NODE_EXTRA_CA_CERTS环境变量会影响配置:

  • 若设置了NODE_EXTRA_CA_CERTS,要么确保该变量指向的文件包含你的自定义CA,要么暂时取消该变量后重试。
  • 可通过process.env.NODE_EXTRA_CA_CERTS查看当前是否设置了该变量。

4. 验证服务器证书本身的有效性

检查服务器证书的有效期与域名匹配度:

  • 用openssl x509 -in server-cert.pem -text -noout查看证书的Validity(有效期)和Subject Alternative Name(域名)字段,确保证书未过期且域名与你访问的地址一致。

5. 临时排查测试(仅用于定位问题,生产环境禁用)

若前面步骤均无效,可临时关闭证书验证(绝对不能用于生产环境),确认是否为CA配置问题:

const httpsAgent = new https.Agent({
  rejectUnauthorized: false
});

如果关闭后请求成功,说明问题确实出在CA验证环节,返回前面的步骤重新排查。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 21:54:25