项目场景:
苍穹买卖项目开发
问题描述
苍穹买卖项目开发后上传代码,时隔两天后上传git产生了OpenSSL SSL_read: Connection was reset, errno 10054的错误OpenSSL SSL_read: Connection was reset, errno 10054
原因分析:
上述错误表明在 Git 通过 HTTPS 与远程服务器通信的过程中,连接被远程主机(服务器)强制断开了。
errno 10054
是 Windows 系统的错误代码,表示远程主机重置了连接(Connection reset by peer)。
这类问题常常是由于以下原因导致的:
1. 远程 Git 服务器使用了过期/自签名/变更过的 SSL 证书
-
如果你之前信任的证书失效(例如服务器证书已过期或被替换),Git 会在进行 SSL 握手时验证失败。
-
Git 默认强制 SSL 验证,失败就会终止连接,报出
SSL_read
错误。
2. 公司/学校网络启用了 HTTPS 拦截代理
-
有些机构的网络会拦截 HTTPS 流量并使用自签名证书重新加密流量。
-
这时 Git 看到的是一个 不受信任的证书,验证失败,连接被重置。
3. 系统环境变量或 Git 配置变动
-
如果你换了网络、更新了操作系统、修改了 Git 设置,可能影响 SSL 的正常连接。
解决方案:
git config --global http.sslVerify false
在当前项目工程文件下使用git bash执行上述命令,重新push到git中即可。
使用上述命令关闭了 Git 的 SSL 证书校验功能,就不再关心远程服务器证书是否合法,从而:
-
跳过了握手失败的问题;
-
即使证书无效,Git 也会继续连接和传输数据。
!!!不建议长期使用 http.sslVerify false
的原因
虽然能临时解决问题,但长期使用是不安全的。因为:
-
任何服务器都可以伪装成你的远程仓库;
-
有可能上传了代码给了“假冒服务器”而不自知;
-
数据可能被第三方篡改或窃取。
正确的解决方法(推荐)
-
让 Git 信任你的服务器证书:
-
如果你用的是自签名证书,可以下载
.crt
文件,然后执行:git config --global http.sslCAInfo /path/to/your/ca.crt
-
-
使用 SSH 替代 HTTPS(最推荐)
-
HTTPS 容易被代理拦截,SSH 更适合长期使用:
git@github.com:yourname/yourrepo.git
-
设置 SSH key 后可安全推送代码,且不受证书影响。
-
-
仅对单个仓库关闭验证(临时解决)
git config http.sslVerify false
只对当前仓库有效,不影响其他项目。