当你尝试从远程仓库克隆 Git 存储库时,遇到 “SSL certificate problem: self-signed certificate in certificate chain” 错误,通常表明远程服务器使用的 SSL 证书不被你的系统信任。
以下是几种解决方案:
1. 配置 Git 忽略 SSL 验证
不推荐此方法,因为它会降低连接的安全性。但是如果对安全性要求不高,这个方法是最快捷的。
git -c http.sslVerify=false clone <repository-url>
2. 安装并信任自签名证书
如果你有权访问自签名证书,可以在本地计算机上安装该证书。步骤因操作系统不同而有所不同。
在 Linux 上:
将自签名证书添加到受信任的证书存储中:
- 将你的证书文件(例如
self-signed.pem
)复制到/usr/local/share/ca-certificates/
目录。 - 更新证书存储:
sudo update-ca-certificates
在 Windows 上:
- 运行
certmgr.msc
打开证书管理控制台。 - 导入自签名证书到 “受信任的根证书颁发机构”。
在 macOS 上:
使用 Keychain Access 应用程序将证书添加到系统或登录钥匙串,并将其设置为 “始终信任”。
3. 修改 Git 配置信任证书
- 获取自签名证书并保存(例如
self-signed.pem
)。 - 更改 Git 配置使用自签名证书:
git config --global http.sslCAInfo /path/to/self-signed.pem
4. 使用 SSH 克隆(如果可能)
如果远程仓库支持 SSH,可尝试使用 SSH 克隆而不是 HTTPS:
git clone git@<server>:<username>/<repository>.git
使用 SSH 需要在 git 中配置 SSH 密钥,以 GitLab 为例,可以参考:GitLab 如何添加 SSH 密钥?
5. 更新 Git 客户端
有时问题可能是由于旧版本的 Git 客户端和 SSL 库引起的。更新 Git 客户端到最新版本可能解决问题。
建议:
如果自签名证书来自内部服务器或测试环境,以上方法可以暂时解决问题。然而,在生产环境中,建议使用由受信任的 CA 签发的正式 SSL 证书。