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

启用OpenSSL时tsc编译后端出现自签名证书链错误求解决

解决tsc编译时"self signed certificate in certificate chain"错误(OpenSSL启用状态下)

核心原因

OpenSSL启用时,Node.js(tsc基于Node.js运行)会严格校验SSL证书链,而自签名证书不在默认信任列表内,导致编译过程中涉及的HTTPS请求触发证书校验失败,抛出该错误。

可行解决方案

1. 给Node.js添加信任的自签名证书

  • 找到你的自签名证书文件(例如internal-cert.pem)
  • 设置环境变量让Node.js将该证书加入信任链:
    # Linux/macOS终端
    export NODE_EXTRA_CA_CERTS="/绝对路径/internal-cert.pem"
    
    # Windows PowerShell
    $env:NODE_EXTRA_CA_CERTS="C:\绝对路径\internal-cert.pem"
    
  • 重新运行tsc编译即可,Node.js会自动信任该证书。

2. 针对npm依赖拉取场景(若编译时涉及安装依赖)

如果错误源于npm拉取私有仓库包时的证书校验,可单独给npm配置信任证书:

npm config set cafile "/绝对路径/internal-cert.pem"

注意:若仅临时测试,可临时关闭npm的严格SSL校验(不推荐生产环境):

npm config set strict-ssl false

3. 系统层面添加信任证书

将自签名证书添加到操作系统的根证书信任存储,Node.js会自动继承系统信任列表:

  • Windows:双击证书文件,选择「安装证书」,将其放入「受信任的根证书颁发机构」
  • macOS:打开「钥匙串访问」,导入证书后右键选择「显示简介」,设置信任为「始终信任」
  • Linux:将证书复制到/usr/local/share/ca-certificates/目录,执行update-ca-certificates命令更新系统证书列表

4. 检查tsconfig配置(若涉及远程类型资源)

如果你的tsconfig.json中配置了types或typeRoots指向自签名HTTPS的远程类型定义,要么确保本地信任该证书,要么替换为HTTP地址(不推荐生产环境)。

注意事项

  • 生产环境优先选择系统层面添加证书或NODE_EXTRA_CA_CERTS方案,避免关闭SSL校验或禁用OpenSSL
  • 确保自签名证书的域名、有效期与实际访问的资源匹配,避免后续出现其他证书相关错误

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 20:40:58