如何为GitLab CI的renovate-runner提供自签名证书
解决自托管GitLab中Renovate自签名证书验证失败问题
问题场景
使用GitLab renovate-runner远程引入官方模板配置Renovate后,因自托管GitLab服务器使用自签名证书,运行流水线时出现证书验证错误,核心错误提示为UNABLE_TO_VERIFY_LEAF_SIGNATURE/unable to verify the first certificate。
原配置代码:
include: - remote: https://gitlab.com/renovate-bot/renovate-runner/-/raw/v20.1.0/templates/renovate.gitlab-ci.yml
关键错误日志片段:
DEBUG: GET https://gitlab.xxxxx.xx/api/v4/user = (code=UNABLE_TO_VERIFY_LEAF_SIGNATURE, statusCode=-1 retryCount=0, duration=45) DEBUG: Gitlab API error "err": { "name": "RequestError", "code": "UNABLE_TO_VERIFY_LEAF_SIGNATURE", "message": "unable to verify the first certificate", // 省略其余栈追踪信息 }
解决方法
方法1:通过CI变量注入证书(推荐)
- 进入GitLab仓库的设置 > CI/CD > 变量页面
- 添加名为
RENOVATE_EXTRA_CA_CERTS的变量,将自签名证书的PEM格式文本直接粘贴到变量值中 - 保存后,Renovate会自动读取该变量并将证书加入信任列表,无需修改现有CI配置
方法2:修改CI配置挂载证书
如果需要自定义证书存储路径,可在.gitlab-ci.yml中覆盖默认作业配置:
include: - remote: https://gitlab.com/renovate-bot/renovate-runner/-/raw/v20.1.0/templates/renovate.gitlab-ci.yml renovate: variables: RENOVATE_EXTRA_CA_CERTS: "${CI_PROJECT_DIR}/certs/selfsigned.crt" before_script: - mkdir -p certs - echo "$SELF_SIGNED_CERT" > certs/selfsigned.crt
注意:需提前在CI变量中创建
SELF_SIGNED_CERT变量,值为自签名证书的PEM格式文本
方法3:临时禁用证书验证(不推荐)
仅适用于测试场景,生产环境禁止使用:
- 在CI变量中添加
RENOVATE_TLS_SKIP_VERIFY=true - 该设置会关闭所有TLS证书验证,存在数据泄露或中间人攻击风险
内容的提问来源于stack exchange,提问作者burki
相关产品推荐
相关产品推荐

