codebuddy调用https接口因证书链不完整或自签名ca被node.js tls校验拦截,报“unable to verify the first certificate”等错;需通过curl诊断、检查代理、验证npm配置三步定位;修复方式包括补全私有ca到系统信任库(需重启进程)、临时禁用校验(仅限调试)或注入自定义ca路径。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

CodeBuddy在调用HTTPS接口时因证书链不完整或自签名CA被拒绝,导致请求直接中断并报错“unable to verify the first certificate”或“SELF_SIGNED_CERT_IN_CHAIN”,这类失败不是网络不通,而是TLS握手阶段就被Node.js底层校验拦截。
先确认是哪一层在报错
打开终端,依次执行三步诊断:
第一步:运行 curl -Iv https://api.codebuddy.dev/v1/health,观察输出中是否出现 issuer 字段指向公司内部CA(如“CN=Corp Internal Root CA”)或显示“unable to get local issuer certificate”;
第二步:检查代理环境变量,Linux/macOS执行 echo $HTTPS_PROXY,Windows PowerShell执行 $env:HTTPS_PROXY,若返回非空值,说明请求正经由企业网关转发;
第三步:验证npm是否同样失败,运行 npm config get strict-ssl,如果返回 false 但 CodeBuddy 仍报错,则问题不在npm配置,而在CodeBuddy进程自身加载的证书信任链。
补全私有CA根证书到系统信任库
这是最安全、无需改代码的修复方式,适用于内网统一签发证书的企业环境。
方法一(Windows):双击管理员提供的 corp-root-ca.crt 文件 → 点击“安装证书” → “本地计算机” → “受信任的根证书颁发机构” → 完成;
方法二(macOS):将证书拖入“钥匙串访问” → 右键该证书 → “显示简介” → 展开“信任” → “当使用此证书时”下拉选“始终信任” → 关闭窗口后输入密码保存;
方法三(Linux):把证书内容追加进系统CA包,执行 sudo cp corp-root-ca.crt /usr/local/share/ca-certificates/ && sudo update-ca-certificates;
【必须重启CodeBuddy进程】,否则新证书不会被已加载的Node.js实例识别。
临时跳过证书校验(仅限开发调试)
当你无法获取根证书、或需快速验证业务逻辑是否正常时可用,但严禁用于生产环境。
在启动CodeBuddy前,设置环境变量:NODE_TLS_REJECT_UNAUTHORIZED=0;
Linux/macOS:执行 export NODE_TLS_REJECT_UNAUTHORIZED=0 再运行 codebuddy start;
Windows PowerShell:执行 $env:NODE_TLS_REJECT_UNAUTHORIZED="0" 后启动;
注意:这个变量会让所有HTTPS请求绕过证书链校验,包括后续调用的OpenAI、GitHub等第三方API,【一旦验证通过,必须立刻取消该变量】。
注入自定义CA证书路径给CodeBuddy进程
比全局禁用更精细,只影响CodeBuddy自身请求,且不依赖系统证书库更新。
第一步:把公司根证书保存为 /path/to/corp-ca.pem,确保文件内容以 -----BEGIN CERTIFICATE----- 开头、-----END CERTIFICATE----- 结尾;
第二步:启动CodeBuddy时指定证书路径:NODE_EXTRA_CA_CERTS=/path/to/corp-ca.pem codebuddy start;
这一步会覆盖Node.js默认信任的根证书列表,只认你提供的这个CA;
如果CodeBuddy是以systemd服务方式运行,需在service文件的 Environment= 行中添加 NODE_EXTRA_CA_CERTS=/path/to/corp-ca.pem 并重载配置。











