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

旧版本Node环境下如何让Axios适配LetsEncrypt新根证书

解决方案

问题核心原因

Node 8.x 内置的根证书库仍包含已过期的DST Root CA X3,且内置OpenSSL版本对Let's Encrypt新的交叉证书链验证逻辑存在兼容性问题。你之前的配置存在两处明显错误:

  • 错误配置了cert参数:cert字段仅用于客户端双向认证场景,普通HTTPS请求信任自定义根证书仅需配置ca参数即可,多余的cert配置会导致TLS握手逻辑异常
  • Axios参数传递错误:你把httpsAgent放在了POST请求的body参数位置,实际应该放在请求配置的第三个参数对象中

可行配置方案

方案1:修改Axios请求配置

确认你下载的ISRG Root X1证书为正确的PEM格式,按如下方式修改代码即可:

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

// 仅配置ca参数即可,无需配置cert
const httpsAgent = new https.Agent({
  ca: fs.readFileSync('./isrgrootx1.pem'),
  rejectUnauthorized: true // 保留证书校验,不要直接设为false关闭安全校验
});

// axios.post第二个参数为请求body,第三个参数才是请求配置项
const response = await axios.post(fullEndpoint, {/* 此处填写你的请求body参数 */}, {
  httpsAgent: httpsAgent
});

如果需要保留Node原有内置根证书的信任能力,仅新增ISRG Root X1的信任,可以将ca配置为数组,将原有根证书和新增根证书内容拼接传入即可。

方案2:全局扩展Node根证书(无需修改业务代码)

Node 8.x 支持NODE_EXTRA_CA_CERTS环境变量,启动应用前指定你下载的ISRG Root X1证书路径即可,不需要修改任何Axios相关代码:

  1. 将下载好的isrgrootx1.pem放在应用可访问的目录下
  2. 启动应用时添加对应环境变量即可:
NODE_EXTRA_CA_CERTS=./isrgrootx1.pem node your-app.js

该方案会全局扩展Node.js的根证书信任列表,所有HTTPS请求都会自动信任ISRG Root X1证书,适配所有依赖内置HTTPS模块的请求逻辑。

注意事项

不要为了临时解决问题将rejectUnauthorized设为false,该操作会关闭所有证书校验,存在严重的中间人攻击安全风险。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 21:06:03