GitLab服务器Git LFS证书错误:如何保留SSL验证并实现文件锁定?
问题描述
我在用免费GitLab服务器,尝试通过Git LFS实现文件锁定/解锁功能。执行Git LFS命令时遇到x509证书错误:
$ git lfs locks Error while retrieving locks: Get "https://*GitlabURL*/info/lfs/locks?refspec=refs%2Fheads%2Fmain": x509: certificate signed by unknown authority
另一个错误示例:
$ git lfs lock lockable.txt Locking lockable.txt failed: Post "https://hsvdagitb.sci.com/test_group1/test_project.git/info/lfs/locks": x509: certificate signed by unknown authority
我试过在命令前加GIT_SSL_NO_VERIFY=1,或者执行git config --global http.sslVerify false,确实能让Git LFS命令正常运行,但会导致Git LFS的权限校验失效——我锁定文件后,其他用户仍可编辑并推送该文件,无法拦截此类操作。
我需要解决这个x509证书错误,既要正常使用Git LFS的文件锁定功能,又要保留SSL验证,确保已锁定的文件不会被其他用户推送。
关闭SSL验证后的运行示例(存在安全风险):
$ GIT_SSL_NO_VERIFY=1 git lfs locks warning: ----------------- SECURITY WARNING ---------------- warning: | TLS certificate verification has been disabled! | warning: --------------------------------------------------- warning: HTTPS connections may not be secure. See https://aka.ms/gcm/tlsverify for more information. warning: ----------------- SECURITY WARNING ---------------- warning: | TLS certificate verification has been disabled! | warning: --------------------------------------------------- warning: HTTPS connections may not be secure. See https://aka.ms/gcm/tlsverify for more information. lockable.txt Firstname Lastname ID:7
解决方案
核心思路是让Git和Git LFS信任GitLab服务器的证书,而非直接关闭SSL验证。
1. 导入GitLab根证书到系统信任库
- 获取GitLab服务器的根证书:通过浏览器访问GitLab地址,点击地址栏锁图标 → 查看证书 → 详细信息 → 导出为Base64编码的CER格式文件。
- 配置系统信任:
- Linux:将证书文件放到
/usr/local/share/ca-certificates/目录,执行sudo update-ca-certificates更新信任列表。 - Windows:双击证书文件,选择“安装证书”,指定“本地计算机”,将证书放入“受信任的根证书颁发机构”存储。
- macOS:双击证书文件,在钥匙串访问中选择“系统”钥匙串,设置证书信任级别为“始终信任”。
- Linux:将证书文件放到
2. 单独为Git配置证书信任(不修改系统全局)
若不想改动系统全局证书设置,可仅让Git和Git LFS信任该证书:
- 执行以下命令配置(二选一):
# 全局生效(所有仓库适用) git config --global http.sslCAInfo /path/to/your/gitlab-ca.crt # 仅当前仓库生效 git config http.sslCAInfo /path/to/your/gitlab-ca.crt
Git LFS会继承Git的SSL配置,这样既解决了证书验证问题,又能保留Git LFS的锁定权限校验。
3. 验证配置效果
执行git lfs locks命令,若能正常返回锁定列表且无x509错误,同时测试锁定文件后其他用户无法推送,则配置成功。
内容的提问来源于stack exchange,提问作者Jacob
相关产品推荐
相关产品推荐

