GitHub Actions自托管Windows Runner上传制品失败:无法获取本地颁发者证书
解决GitHub Actions自托管Windows运行器上传工件证书错误的方案
问题根源
该错误源于upload-artifact动作依赖的Node.js环境未正确识别已添加的根CA证书——即便系统证书管理器已配置,Node.js默认不会自动读取系统根证书存储,代理环境下这个问题会更突出。
具体解决步骤
配置Node.js专属CA证书环境变量
在运行器的系统环境变量中新增:- 变量名:
NODE_EXTRA_CA_CERTS - 变量值:根CA证书的绝对路径(例:
C:\certs\corp-root-ca.crt)
配置完成后,重启GitHub Actions Runner服务,确保变量生效。
- 变量名:
补全运行器.env文件的证书配置
打开运行器安装目录下的.env文件,除代理地址外,添加证书路径配置:HTTP_PROXY=http://your-proxy-address:port HTTPS_PROXY=http://your-proxy-address:port NO_PROXY=localhost,127.0.0.1,github.com,api.github.com NODE_EXTRA_CA_CERTS=C:\certs\corp-root-ca.crt注意路径需使用Windows格式(单反斜杠或双反斜杠),且与系统环境变量保持一致。
确认证书格式为PEM
若当前证书是DER格式,需转换为Base64编码的PEM格式:- 打开Windows证书管理器,找到目标根CA证书
- 右键选择「所有任务」→「导出」
- 选择「Base-64编码X.509(.CER)」格式保存,再用转换后的文件路径配置。
验证网络与证书有效性
在运行器机器上打开PowerShell,执行命令测试GitHub API连接:Invoke-RestMethod -Uri https://api.github.com/user -Proxy http://your-proxy-address:port -ProxyCredential (Get-Credential)若能正常返回用户信息,说明证书与代理配置无误。
强制重启运行器服务
完成所有配置后,必须重启GitHub Actions Runner服务:- 打开Windows「服务」面板
- 找到
GitHub Actions Runner服务,右键选择「重启」
额外注意事项
- 确保运行器的服务账户拥有CA证书文件的读取权限,避免因权限不足导致证书加载失败。
- 若使用运行器组管理,检查组级环境变量是否覆盖了本地运行器的配置。
内容的提问来源于stack exchange,提问作者noonenine
相关产品推荐
相关产品推荐

