针对「SSL certificate problem: self signed certificate」问题,以下是综合解决方案及注意事项:
一、临时绕过SSL验证(适用于测试环境)
- 设置环境变量
在命令行中临时禁用SSL验证:
# Windows
set GIT_SSL_NO_VERIFY=true
git clone https://xxx.git
# Linux/macOS
env GIT_SSL_NO_VERIFY=true git clone https://xxx.git
- 全局禁用SSL验证
修改Git全局配置,永久关闭SSL校验:
git config --global http.sslVerify false
二、配置可信证书(推荐生产环境)
下载CA证书
从 curl官方 下载最新证书文件,保存到本地路径(如
C:\cacert.pem
)。- 配置curl/PHP/Python等工具
- curl:在代码中添加
--cacert /path/to/cacert.pem
参数。 - PHP:在
php.ini
中添加curl.cainfo=/path/to/cacert.pem
。 - Python:在请求中设置
verify=False
(如requests.get(url, verify=False)
)。
三、长期解决方案(安全建议)
- 使用SSH协议
将Git仓库地址从https://
改为ssh://
,避免SSL问题:
git clone git@xxx.git
- 部署真实SSL证书
通过CA机构(如Let's Encrypt)申请免费证书,替换自签名证书,确保客户端信任。
四、注意事项
- 安全风险:禁用SSL验证会暴露通信内容,可能被中间人攻击窃取敏感数据,仅限测试环境使用。
- 自签名证书风险:自签名证书不受浏览器/系统信任,可能导致用户警告、中间人攻击等问题,建议优先使用真实证书。
五、其他工具场景
- IntelliJ IDEA:配置Terminal时添加
git config --global http.sslVerify false
。 - SourceTree:在仓库设置中禁用SSL验证或切换SSH协议。