我正在尝试使用Github Desktop和git shell从Github克隆,但继续收到此错误:
Cloning into 'C:\Users\John Doe\workspace\MyProject'...
fatal: unable to access 'https://github.com/JohnDoe/MyProject.git/':
schannel: next InitializeSecurityContext failed: Unknown error (0x80092012) -
The revocation function was unable to check revocation for the certificate.
拉动现有存储库时会出现同样的问题。
我已经尝试将~/.ssh/github-ssh.pub
中的SSH密钥上传到Github设置,但它没有任何帮助。
编辑:刚检查过,即使我尝试克隆不存在的存储库,也会发生这种情况。
答案 0 :(得分:28)
禁用证书验证(将http.sslVerify
设置为false
)始终是一个坏主意。
我认为这里的问题是,当您安装 git 时,您选择使用 Windows安全通道库而不是 OpenSSL 库:
正如@ CurtJ.Sampson所指出的那样(感谢Curt!),您可以转而使用 OpenSSL 库,这将解决您的问题。这可以使用以下命令完成:
git config --global http.sslBackend openssl
或者,您可以重新安装 git ,在此过程中指定 OpenSSL 库。
不要忘记重新启用 git SSL验证:
git config --global http.sslVerify true
更新:如果您在自己的 git 服务器上使用自签名或公司证书,并且在尝试连接时遇到错误(例如证书链中的自签名证书,或 SSL证书问题:无法获得本地颁发者证书),那么解决方法就是告诉 git 在哪里找到用于签署该站点证书的 CA 。您可以使用以下配置命令执行此操作:
git config --global http.{your site's URL here}.sslcainfo "{path to your cert file}"
例如,如果您在https://my.gitserver.com/
有一个本地git服务器,并且签署了该网站证书的 CA 位于C:\Certs\MyCACert.crt
,那么您需要输入:
git config --global http.https://my.gitserver.com/.sslcainfo "C:\Certs\MyCACert.crt"
与将CA证书添加到 git 的捆绑ca-bundle.crt
文件相比,这是一个更强大的解决方案,因为当您下次更新 git时,该文件将被覆盖
答案 1 :(得分:15)
当您在对所有流量执行MITM并阻止吊销检查的公司网络上时,通常也会遇到此错误。 显然,理想的情况是不阻止检查(或至少阻止url白名单),但可能需要解决此问题。
与Mike回答的第一部分一样,一个选项是using the OpenSSL bindings instead。虽然这样做可行,但需要手动维护证书列表,这在极端情况下可能不切实际(例如,每天发布新的根证书,尽管这不太可能)。
类似于Mike回答的第二部分的另一种选择是禁用吊销检查。
git-for-windows的最新版本(2.19及更高版本)提供了http.schannelCheckRevoke
setting:
用于强制执行或禁用cURL中的证书吊销检查 当http.sslBackend设置为“ schannel”时。如果默认,则默认为
true
未设定。只有在Git持续出错时才需要禁用它 该消息是关于检查一个服务器的吊销状态 证书。如果cURL不支持以下选项,则忽略此选项 在运行时设置相关的SSL选项。
...因此,您可以首先简单地禁用检查是否撤销:
git config --global http.schannelCheckRevoke false
请注意,与完全禁用SSL不同,这并不比使用Mike对于特定存储库的答案固有地不安全:如果您捕获并配置了一个空吊销列表(通常情况),则实际上已禁用了吊销检查。 Disabling revocation checking only becomes a risk in the case of private-key compromise(在链中的某个时刻),这是罕见且困难的。
还请注意,在公司MITM设置中,正在为您执行吊销检查:没有值得使用的代理会为无效或(已知)已泄露的证书颁发证书。
答案 2 :(得分:1)
我在 Windows 10 上使用 vagrant(安装版本:2.2.16)时遇到此错误,由卡巴斯基反病毒软件引起,并在我添加站点 vagrantcloud.com 和 cloud-images.ubuntu.com 时得到解决为防病毒解决,以允许扫描加密的连接并允许作为受信任的站点。有关防病毒设置更改的更多信息,请访问 https://support.kaspersky.com/KIS/2019/en-US/157530.htm
仅供参考,众所周知,防病毒软件会导致此类错误,您需要做的就是识别下载发生的站点,并将其添加到防病毒程序的受信任地址中。就我而言,它是卡巴斯基反病毒软件。可能正在使用 --debug 运行命令以获取 adjact 站点将是一个好主意。