Eclipse通过EGit访问GitLab时出现SSL握手失败错误
解决方案
1. 切换EGit的HTTP客户端为系统原生客户端
EGit 6.0.0默认使用内置Apache HTTP客户端,与命令行Git的证书/代理逻辑不一致。修改步骤:
- 打开
Window > Preferences > Team > Git > Configuration - 点击
Add Entry,添加两个配置项:- 键:
http.useSystemProxies,值:true - 键:
http.sslBackend,值:openssl
- 键:
- 或者直接在
Window > Preferences > Team > Git > HTTP中,将HTTP Client设置为System(部分版本显示为Native)
2. 导入GitLab根证书到Eclipse的JVM信任库
Eclipse自带的JDK信任库可能缺少GitLab的根证书,而命令行Git使用的是系统证书库:
- 浏览器打开
https://gitlab.com,导出网站的根证书(如DigiCert Global Root CA,格式为CER) - 找到Eclipse使用的JDK路径,进入
jre/lib/security目录 - 执行以下keytool命令导入证书(默认密码为
changeit):
keytool -importcert -file [证书文件路径] -keystore cacerts -alias gitlab-root-cert
3. 降级EGit至兼容版本
EGit 6.0.0与GitLab的SSL握手协议存在兼容性问题,可降级到之前的稳定版本:
- 打开
Help > Install New Software - 点击
Add,输入旧版本EGit更新站点,例如https://download.eclipse.org/egit/updates-5.13/(对应Eclipse 2022-03版本) - 先卸载当前的EGit组件,再安装旧版本
4. 强制Eclipse使用TLS 1.2/1.3协议
GitLab要求使用TLS 1.2及以上版本,可在Eclipse启动参数中强制启用:
- 打开Eclipse安装目录下的
eclipse.ini文件 - 在
-vmargs下方添加:
-Dhttps.protocols=TLSv1.2,TLSv1.3
- 重启Eclipse
内容的提问来源于stack exchange,提问作者John Aronson
相关产品推荐
相关产品推荐

