如何将带自签名证书的私有Git仓库配置为Concourse资源
将带自签名证书的私有Git仓库用作Concourse资源
我之前刚好踩过这个坑,整理了一套简洁的实操步骤,亲测有效:
1. 导出自签名CA证书
首先得把你的Git仓库使用的自签名CA证书导出成PEM格式:
- 如果是自建Git服务器(比如GitLab/Gitea),通常可以在服务器上找到CA证书文件,直接复制内容即可;
- 也可以通过浏览器访问Git仓库页面,导出站点的根CA证书,再转换成PEM格式(注意要导出根证书,不是服务器的叶子证书)。
最终你会得到一段类似这样的完整内容:
-----BEGIN CERTIFICATE----- MIIDdzCCAl+gAwIBAgIUY...(省略中间证书内容)...== -----END CERTIFICATE-----
2. 配置Concourse Git资源
在你的Pipeline配置里,给Git资源加上ca_certs参数,把证书内容直接填入。分两种常见场景:
场景1:SSH协议的Git仓库
如果用SSH密钥认证,资源配置示例如下:
resources: - name: my-private-git-repo type: git source: uri: git@your-git-server.example.com:team/project.git private_key: | -----BEGIN RSA PRIVATE KEY----- # 你的SSH私钥内容(无密码的私钥更方便,有密码可额外添加passphrase参数) -----END RSA PRIVATE KEY----- ca_certs: - | -----BEGIN CERTIFICATE----- # 刚才导出的自签名CA证书完整内容 -----END CERTIFICATE----- branch: main
场景2:HTTPS协议的Git仓库
如果用用户名/访问令牌认证,配置示例:
resources: - name: my-private-git-repo type: git source: uri: https://your-git-server.example.com/team/project.git username: your-git-username password: your-access-token-or-password ca_certs: - | -----BEGIN CERTIFICATE----- # 自签名CA证书完整内容 -----END CERTIFICATE----- branch: main
3. 可选:全局信任证书(多资源复用)
如果你的Concourse里有多个资源需要访问这个Git仓库,不想每个资源都重复写证书,可以把证书加到Worker节点的系统信任存储:
- 在每个Concourse Worker节点上,把PEM格式的证书文件复制到
/usr/local/share/ca-certificates/目录; - 运行命令
update-ca-certificates更新系统证书信任列表; - 重启Concourse Worker服务,之后所有Git资源都会自动信任这个证书,无需再在资源里配置
ca_certs。
4. 验证配置
写个简单的测试Pipeline验证是否能正常拉取代码:
jobs: - name: test-git-resource plan: - get: my-private-git-repo trigger: true - task: check-repo-content config: platform: linux image_resource: type: docker-image source: {repository: alpine} inputs: - name: my-private-git-repo run: path: ls args: [my-private-git-repo]
用fly set-pipeline -p test-git -c test-pipeline.yml部署,然后触发任务,如果能成功列出仓库文件,就说明配置没问题了。
内容的提问来源于stack exchange,提问作者Bart Weber
相关产品推荐
相关产品推荐

