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

GitLab CE 15.7配置自签名证书Docker Registry失败求助

问题:GitLab CE 15.7 Docker Registry 自建CA证书认证失败

当前GitLab配置(gitlab.rb)

registry_external_url 'https://198.18.133.100:5000'
registry['enable'] = true
registry['username'] = "registry"
registry['group'] = "registry"
registry['registry_http_addr'] = "127.0.0.1:5000"
registry['debug_addr'] = "localhost:5001"
registry['env'] = {
  'SSL_CERT_DIR' => "/etc/gitlab/ssl/"
}
registry['rootcertbundle'] = "/etc/gitlab/ssl/198.18.133.100.crt"

推送镜像时的错误信息

WARNING! Using --password via the CLI is insecure. Use --password-stdin.
Error response from daemon: Get "https://198.18.133.100:5000/v2/": x509: certificate signed by unknown authority
Cleaning up project directory and file based variables
00:00
ERROR: Job failed: exit status 1

解决思路

  • 优先解决客户端证书信任问题:
    错误核心是Docker客户端(GitLab Runner所在机器的Docker)不识别自建CA。需将自建CA根证书放到Docker信任目录:

    • Linux系统:创建目录/etc/docker/certs.d/198.18.133.100:5000/,将CA根证书命名为ca.crt放入该目录,执行systemctl restart docker重启服务。
    • Windows/macOS:对应路径为C:\ProgramData\Docker\certs.d\198.18.133.100:5000\ca.crt或~/Library/Containers/com.docker.docker/Data/database/com.docker.driver.amd64-linux/etc/docker/certs.d/198.18.133.100:5000/ca.crt,放入证书后重启Docker。
  • 检查GitLab侧证书配置:

    • 确保/etc/gitlab/ssl/目录下同时存在服务器证书198.18.133.100.crt和私钥198.18.133.100.key,权限设置为root:root、600。
    • 确认registry['rootcertbundle']指向的是CA根证书,而非仅服务器证书。如果服务器证书已包含完整CA链,可直接使用;否则需单独指定CA根证书路径。
  • 验证Registry服务的SSL有效性:
    在GitLab服务器本地执行curl --cacert /path/to/your/ca.crt https://127.0.0.1:5000/v2/,若返回空JSON{}说明本地SSL配置正常;若报错,检查证书与私钥是否匹配,并用gitlab-ctl status registry确认Registry服务是否正常运行。

  • GitLab Runner容器化场景的额外配置:
    如果Runner是用Docker启动的,需要将CA根证书挂载到Runner容器内的Docker证书目录,或者在Runner的config.toml中添加证书信任相关的挂载配置,确保容器内的Docker客户端能识别自建CA。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 01:05:18