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

Git克隆GitLab仓库遇SSL证书问题 求安全解决方案

GitLab SSL证书问题解决方案及相关疑问解答

1. .crt证书是什么?

你猜的方向完全正确,.crt是一种数字身份凭证,相当于远程Git服务器的“合法身份证”。当你的电脑和Git服务器建立加密连接时,服务器会出示这个证书,你的电脑通过它确认连接的是真的公司GitLab服务器,不是伪造的钓鱼服务器,以此保证数据传输的安全。

2. 如何正确获取该证书?

两种简单可行的方法:

  • 浏览器导出法:打开公司GitLab网页(https://git.company.com),点击地址栏的锁形图标 → 选择“证书” → 切换到“详细信息”标签页 → 点击“复制到文件”,按向导选择「Base64编码的X.509(.CER)」格式,保存成后缀为.crt的文件。
  • 命令行导出法(用Git自带的OpenSSL工具,在Git Bash里执行):
openssl s_client -connect git.company.com:443 </dev/null | sed -n '/-----BEGIN CERTIFICATE-----/,/-----END CERTIFICATE-----/p' > company-git.crt

执行后会在当前目录生成company-git.crt文件,这就是服务器的证书。

3. 证书应存放在开发机器的哪个位置?

找一个固定、不会被误删或覆盖的目录,比如专门创建C:\GitCerts文件夹,把证书放在这里。不要存到Git安装目录(比如C:/Program Files/Git/mingw64/ssl/certs),因为Git更新时可能会清空或替换这个目录里的文件,导致证书失效。

4. 如何配置Git使用该证书?

分两种配置范围,按需选择:

  • 全局配置(所有Git仓库生效):在Git Bash或PowerShell里执行:
git config --global http.sslCAInfo "C:/GitCerts/company-git.crt"
  • 单个仓库配置(仅当前仓库生效):先进入目标仓库的本地目录,再执行:
git config http.sslCAInfo "C:/GitCerts/company-git.crt"

配置完成后,可用以下命令验证设置是否成功:

  • 检查全局配置:git config --global --get http.sslCAInfo
  • 检查单个仓库配置:git config --get http.sslCAInfo

5. 此场景下SSH与SSL的区别?

两者都是加密传输方式,但身份验证逻辑完全不同:

  • SSL(HTTPS方式):靠账号密码或个人访问令牌(PAT)登录,连接时必须验证服务器的.crt证书,确保服务器合法,使用https://开头的仓库地址。你现在遇到的就是SSL证书验证失败的问题。
  • SSH方式:不需要密码,靠本地的SSH密钥对验证身份——私钥存在你的电脑上,公钥添加到你的GitLab账号里,使用git@git.company.com:dev/myproject.git这类地址,不需要依赖SSL证书,能直接绕开当前的证书问题,但需要提前配置SSH密钥。

附:VonC方案命令输出的中文翻译

假设你执行命令后得到如下英文输出:

CONNECTED(000001A8)
depth=0 CN = git.company.com
verify error:num=20:unable to get local issuer certificate
verify return:1
depth=0 CN = git.company.com
verify error:num=21:unable to verify the first certificate
verify return:1
---
Certificate chain
 0 s:CN = git.company.com
   i:CN = Company Internal CA
---
Server certificate
-----BEGIN CERTIFICATE-----
...(证书内容)...
-----END CERTIFICATE-----
subject=CN = git.company.com

issuer=CN = Company Internal CA

---
No client certificate CA names sent
Peer signing digest: SHA256
Peer signature type: RSA-PSS
Server Temp Key: X25519, 253 bits
---
SSL handshake has read 2100 bytes and written 365 bytes
Verification error: unable to get local issuer certificate
---
New, TLSv1.3, Cipher is TLS_AES_256_GCM_SHA384
Server public key is 2048 bit
Secure Renegotiation IS NOT supported
Compression: NONE
Expansion: NONE
No ALPN negotiated
Early data was not sent
Verify return code: 20 (unable to get local issuer certificate)
---

翻译成中文:

已连接(000001A8)
深度=0 CN = git.company.com
验证错误:编号=20:无法获取本地颁发者证书
验证返回:1
深度=0 CN = git.company.com
验证错误:编号=21:无法验证第一个证书
验证返回:1
---
证书链
 0 主题:CN = git.company.com
   颁发者:CN = 公司内部CA
---
服务器证书
-----BEGIN CERTIFICATE-----
...(证书内容)...
-----END CERTIFICATE-----
主题=CN = git.company.com

颁发者=CN = 公司内部CA

---
未发送客户端证书CA名称
对等签名摘要: SHA256
对等签名类型: RSA-PSS
服务器临时密钥: X25519, 253位
---
SSL握手已读取2100字节,已写入365字节
验证错误: 无法获取本地颁发者证书
---
新协议,TLSv1.3,密码套件为TLS_AES_256_GCM_SHA384
服务器公钥为2048位
不支持安全重新协商
压缩: 无
扩展: 无
未协商ALPN
未发送早期数据
验证返回码: 20 (无法获取本地颁发者证书)
---

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 21:51:16