"fatal: HttpRequestException encountered." 由于放弃 TLS-1.0 支持,GitHub/Bitbucket 存储库出错

"fatal: HttpRequestException encountered." Error with GitHub/Bitbucket Repositories due to dropping TLS-1.0 support

问题

我最近在推送到 GitHub 存储库时遇到以下消息:

"fatal: HttpRequestException encountered. " 然后再次提示我输入用户名和密码。

根据之前的搜索, and various others 有相同的根本问题。对于那些比我更懒的人,这里有针对不同 applications/OS 的各种解决方案的总结以及相关的讨论。希望人们觉得这有帮助。

原因

不能真正将更新安全性称为问题,所以这就是原因。问题是 GitHub 删除了 TLS-1.0 支持,这导致客户端出现问题,包括 Microsoft Visual Studio 内置的 git 客户端,Git 版本低于 1.14以及 GUI 客户端,包括 tortoiseGit 等。完整的发行说明可以在这里找到: https://githubengineering.com/crypto-removal-notice/

Bitbucket 将从 2018 年 12 月 1 日开始删除 TLSv1.0 和 TLSv1.1。我预计会出现与以前类似的问题。

解决方案

编辑:将我的自我回答移至答案框。见下文。

Git 集线器已从其身份验证服务中删除了 TLS-1.0。 https://githubengineering.com/crypto-removal-notice/

解决方案

Windows 客户

为 Windows 使用 Git 的 2.14.3(或更高版本),更新版本包括 Windows 的 up-to-date Git 凭据管理器:https://gitforwindows.org/

您还可以将 Git Windows 凭据管理器显式更新到最新版本 1.14.0,以获得 TLS-1.2 支持:https://github.com/Microsoft/Git-Credential-Manager-for-Windows/releases/tag/v1.14.0

Visual Studio 客户

建议将您的客户端更新到 VS 2017,或者,如果您无法升级,您可以设置两个 machine-wide 注册表项,它们会影响客户端计算机上的所有 .NET-based 应用程序你可以改变... https://developercommunity.visualstudio.com/content/problem/201457/unable-to-connect-to-github-due-to-tls-12-only-cha.html

JDK

TLS-1.2 在 JDK8 中是默认设置,在 JDK7 中可用。 https://blogs.oracle.com/java-platform-group/diagnosing-tls,-ssl,-and-https

Red Hat 本机 Git 客户端

RH 5 不支持 TLS-1.2,GitHubEngineering 建议更新到 OS 的较新版本。 RH 6.8 和 7.2 将支持 TLS-1.2。 https://www.linuxquestions.org/questions/blog/mensawater-183304/rhel5-wont-support-tlsv1-1-or-higher-36951/

git 的旧版本不再支持 TLS。

在您的计算机上升级 git 可解决此问题。

Download the latest git and install for your machine from here: https://git-scm.com/downloads.

第一步 首先,您需要下载并安装最新版本的 Git Windows 凭据管理器。

这是 GitHub 上的 link。 https://github.com/Microsoft/Git-Credential-Manager-for-Windows/releases/latest

第2步 重新启动您的机器。

步骤 3 在命令行输入一个git命令,会提示你重新登录

第 4 步 如果您仍然遇到相同的致命错误,则需要从此处下载最新版本来更新 Git: https://git-scm.com/downloads

第5步 在命令行中输入一个git命令,系统会提示你重新登录。现在问题应该已经解决了,您应该可以继续正常工作了。

以上解决方案对我不起作用。 但我有一个解决方案, 当 git 在 git bash 上再次要求我们提供用户名时,请在 git bash 上输入您的 GITHUB 用户名和密码,然后您就会回来在工作中。