Visual Studio VS 2022:“推送到远程存储库时遇到错误:Git失败,出现致命错误...”

6vl6ewon  于 2023-10-23  发布在  Git
关注(0)|答案(2)|浏览(733)

我的公司使用GitLab,当我尝试在Visual Studio 2022中使用Git UI推送到我的远程功能分支时,我在输出窗口中得到以下错误:

Git failed with a fatal error.
unable to access '<my gitlab server url>': 
  schannel: CertGetCertificateChain trust error CERT_TRUST_IS_UNTRUSTED_ROOT"

我尝试了下面的命令,我在另一个解决方案git config --global http."<my gitlab server url>.sslCAInfo C:/path/to/cert.pem中看到,但它给了我同样的错误。命令中使用的证书我从GitLab服务器下载了它,通过点击挂锁图标🔏和查看证书。
每次我从UI推送或拉取时都会发生这种情况。当我使用像Git Bash或PowerShell这样的单独终端时,不会发生此错误。

nukf8bse

nukf8bse1#

经过大量的咬牙切齿和搜索(并在这个问题上悬赏),我能够自己确定一个解决方案:将加密网络提供商从OpenSSL切换到Secure Channel。

在工具>选项>源代码控制> Git全局设置下
我不知道为什么OpenSSL给了我一个错误;也许有一个更好的解决方案可以与OpenSSL一起使用。但是,在连接到我公司的Azure DevOps存储库时,只需使用Windows SSL实现就可以解决这个问题。

kh212irz

kh212irz2#

很可能您的公司正在为您的内部域名使用自签名的公司根证书。
在windows上,git提供了两种实现来设置安全的https连接。SChannel(安全通道)或OpenSSL。
看起来您的Visual Studio安装默认为SChannel实现。在这种情况下,必须将其他证书安装到Windows证书存储中。
SChannel实现忽略http.".sslCAInfo设置。
通常,这些证书会使用windows中的策略预先安装在您的系统上。通过切换到Secure Channel安全库,git能够利用Windows的内部方法来设置HTTPS连接,并且此方法将自动信任Windows信任存储中的证书。
在OpenSSL库的情况下,Windows商店不受信任,证书必须单独保存,并通过git config中的http.".sslCAInfo配置密钥进行配置。
看起来你的Git客户端被配置为使用Windows证书存储(提示在日志中的“schannel”一词中)。
若要使证书可信,必须将其添加到系统级的windows证书存储区或用户的证书存储区中。
或者,您可以使用全局git配置将SSL实现显式设置为OpenSSL:
http.sslBackend-要使用的SSL后端的名称(例如“OpenSSL”或“Schannel”)。如果cURL不支持在运行时选择SSL后端,则忽略此选项。
您也可以在Visual Studio配置中设置加密网络提供程序,具体如下:在工具>选项>源代码控制> Git全局设置下

相关信息:

相关问题