Ric*_*lls 236 windows git curl ssl-certificate msysgit
我在Windows上使用git.我安装了msysgit包.我的测试存储库在服务器上有一个自签名证书.我可以使用http访问和使用存储库而不会出现问题.移至https会出现错误"SSL证书问题:无法获取本地颁发者证书".
我在Windows 7客户端计算机的受信任的根证书颁发机构中安装了自签名证书.我可以浏览到Internet Explorer中的https存储库URL,没有错误消息.
本博客http://blogs.msdn.com/b/phkelley/archive/2014/01/20/adding-a-corporate-or-self-signed-certificate-authority-to-git-exe-s-store. aspx解释说curl不使用客户机的证书存储区.我按照博客文章的建议创建了curl-ca-bundle.crt的私有副本,并配置git来使用它.我确信git正在使用我的副本.如果我重命名副本; git抱怨文件丢失了.
我粘贴在我的证书中,如博客文章中所述,我仍然收到"无法获得本地颁发者证书"的消息.
我通过https克隆了一个GitHub存储库,验证了git仍在工作.
我唯一看到的与博客文章不同的是我的证书是根证书 - 没有链条可以达到它.我的证书最初来自于单击IIS8 IIS管理器链接"创建自签名证书".也许这使得证书在某种程度上与curl期望的不同.
如何获得git/curl接受自签名证书?
Sam*_*mir 224
如果要完全禁用SSL验证,请打开Git Bash并运行该命令.
git config --global http.sslVerify false
Run Code Online (Sandbox Code Playgroud)
注意:此解决方案可能会让您受到类似中间人攻击的攻击.因此,请尽快再次启用验证:
git config --global http.sslVerify true
Run Code Online (Sandbox Code Playgroud)
kid*_*ley 91
我也有这个问题.在我的情况下,我试图获得一个post-receive Git钩子,以便在每次推送时更新服务器上的工作副本.试图按照您链接的博客中的说明进行操作.对我来说也没有用,并且在每个用户的基础上覆盖设置似乎也没有用.
我最不得不做的是为Git整体禁用SSL验证(如文章所述).不是完美的解决方案,但它会起作用,直到我能找到一个更好的解决方案.
我编辑了Git配置文本文件(带有我最喜欢的行结束中性应用程序,如Notepad ++),位于:
C:\ Program Files(x86)\ Git\etc\gitconfig
在[http]块中,我添加了一个禁用sslVerify的选项.我完成时看起来像这样:
[http]
sslVerify = false
sslCAinfo = /bin/curl-ca-bundle.crt
Run Code Online (Sandbox Code Playgroud)
这就是诀窍.
注意:这会禁用SSL验证,不建议将其作为长期解决方案.
Iho*_*ich 86
问题是git默认使用"Linux"加密后端.
从Git for Windows 2.14开始,您现在可以将Git配置为使用SChannel,内置的Windows网络层作为加密后端.这意味着您将使用Windows证书存储机制,而无需显式配置curl CA存储机制:https://msdn.microsoft.com/en-us/library/windows/desktop/aa380123(v = vs.85)的.aspx
只需执行:
git config --global http.sslbackend schannel
Run Code Online (Sandbox Code Playgroud)
这应该有所帮助.
在安装git for windows时,使用schannel现在是标准设置,如果可能的话,建议不要通过SSH检查存储库,因为https更容易配置,不太可能被防火墙阻止,这意味着失败的可能性更小.
Oli*_*ver 47
kiddailey我认为非常接近,但我不会禁用ssl验证,而只是提供本地证书:
在Git配置文件中
[http]
sslCAinfo = /bin/curl-ca-bundle.crt
Run Code Online (Sandbox Code Playgroud)
或者通过命令行:
git config --global http.sslCAinfo /bin/curl-ca-bundle.crt
Run Code Online (Sandbox Code Playgroud)
Nad*_*ali 41
我也遇到过这个问题.最后通过获得MSDN博客的指导解决了问题.
更新
实际上你需要在git的证书文件curl-ca-bundel.cert中添加证书,该文件位于Git\bin目录中.
脚步
最后检查状态.请注意,在编辑之前备份curl-ca-bundle.crt文件以保持安全.
Ric*_*lls 39
这个问题的答案使用makecert for Development SSL为我解决了这个问题.
我不知道为什么,但是在IIS管理器中通过简单的"创建自签名证书"链接创建的证书不起作用.我在创建和安装自签名CA Root的链接问题中遵循了该方法; 然后使用它为我的服务器颁发服务器身份验证证书.我在IIS中安装了它们.
这使我的情况与原始问题中引用的博客文章相同.将根证书复制/粘贴到curl-ca-bundle.crt后,git/curl组合就会得到满足.
zio*_*nyx 24
为了避免完全禁用ssl验证或复制/黑客攻击git使用的捆绑CA证书文件,您可以将主机的证书链导出到文件中,并使git使用它:
git config --global http.https://the.host.com/.sslCAInfo c:/users/me/the.host.com.cer
Run Code Online (Sandbox Code Playgroud)
如果这不起作用,您可以仅为主机禁用ssl验证:
git config --global http.https://the.host.com/.sslVerify false
Run Code Online (Sandbox Code Playgroud)
注意:当ssl验证关闭时,可能会受到中间人攻击.
小智 19
使用 Windows 时,问题在于 git 默认使用“Linux”加密后端。从 Git for Windows 2.14 开始,您可以将 Git 配置为使用 SChannel(内置 Windows 网络层)作为加密后端。为此,只需在 GIT 客户端中运行以下命令:
git config --global http.sslbackend schannel
Run Code Online (Sandbox Code Playgroud)
这意味着它将使用Windows证书存储机制,并且您不需要显式配置curl CA存储(http.sslCAInfo)机制。
Jam*_*esD 18
我刚刚遇到了同样的问题,但在Windows上使用sourcetree同样适用于Windows上的普通GIT.按照以下步骤,我能够解决此问题.
这应该可以解决您使用自签名证书和使用GIT的问题.
我尝试使用"http.sslcapath"配置,但这不起作用.此外,如果我没有在证书文件中包含整个链,那么这也将失败.如果有人指出这些,请告诉我,因为必须重复上述新安装.
如果这是系统GIT,那么您可以使用TOOLS - > options GIt选项卡中的选项来使用系统GIT,然后这也解决了sourcetree中的问题.
小智 14
完整地详细列出上述所有答案的摘要。
出现此问题是因为如果您尝试访问的存储库存在,则 git 无法完成与 git 服务器的 https 握手。
从github服务器获取证书的步骤
将证书添加到本地git证书存储的步骤
现在打开您保存在记事本中的证书并将内容与 --Begin Certificate-- 和 --end certificate-- 一起复制
要查找为您的 git 存储的所有证书的路径,请在 cmd 中执行以下命令。
git 配置 --list
检查键'http.sslcainfo',对应的值将是路径。
注意:如果你找不到密钥 http.sslcainfo 检查 Git 的默认路径:C:\Program Files\Git\mingw64\ssl\certs
注1:以管理员模式打开此文件,否则更新后将无法保存。(提示 - 您可以为此使用 Notepad++)
注2:修改此文件前请在别处备份。
我最近也遇到了这个问题,通常当您位于某个公司防火墙后面时,您会遇到此问题,然后 git 无法与您尝试访问的 git 存储库完成 https 握手。解决该问题的方法之一是使用以下命令:
git config --global http.sslverify false
Run Code Online (Sandbox Code Playgroud)
但正如其他人所说,这几乎禁用了 ssl 验证。唯一安全的方法是获取 SSL 证书并将其本地添加到您的 Git 文件夹中,特别是在文件中ca-bundle.crt。
解决这个问题的一种方法是使用 package pcer,要安装它,您需要执行以下操作:
npm i -g pcer
Run Code Online (Sandbox Code Playgroud)
然后执行以下命令:
pcer alias git "C:\Program Files\Git\mingw64\etc\ssl\certs\ca-bundle.crt"
Run Code Online (Sandbox Code Playgroud)
这将git指向上述路径,然后您可以fetch通过执行以下操作来获取证书:
pcer fetch github.com -l git
Run Code Online (Sandbox Code Playgroud)
然后执行git clone就可以正常工作了。例如:
了解更多信息:
https://www.npmjs.com/package/pcer
https://github.com/PeterHdd/pcer
请注意,我是这个包的所有者
对于github存储库(或任何非自签名证书),在安装Git-on-windows时选择以下内容,解决了这个问题.
小智 7
2021 年 1 月 - 在 VS2019 中通过设置 Menu > Git > Settings > Git Global Settings > Cryptographic Network Provider > [Secure Channel] 而不是 [OpenSSL] 解决了这个问题
PS:不需要设置--global 或--local http.sslVerify false。我正在克隆一个没有使用任何自签名证书的 Azure DevOps 存储库。这似乎是 VS2019 或 Windows 版 Git 的问题。他们需要修复它!
我以前遇到过此问题,请使用以下配置解决它。
[http "https://your.domain"]
sslCAInfo=/path/to/your/domain/priviate-certificate
从git 2.3.1开始,您可以https://your.domain在http后面加上以表示以下证书仅适用于它。
就我而言,由于我已经为 Window 7安装了ConEmu 终端,它会ca-bundle在C:\Program Files\Git\mingw64\ssl\certs.
因此,我必须在终端上运行以下命令才能使其工作:
$ git config --global http.sslbackend schannel
$ git config --global http.sslcainfo /mingw64/ssl/certs/ca-bundle.crt
Run Code Online (Sandbox Code Playgroud)
因此,我的C:\Program Files\Git\etc\gitconfig包含以下内容:
[http]
sslBackend = schannel
sslCAinfo = /mingw64/ssl/certs/ca-bundle.crt
Run Code Online (Sandbox Code Playgroud)
另外,我在安装 Git 时选择了与此处提到的相同的选项。
希望有帮助!
| 归档时间: |
|
| 查看次数: |
352453 次 |
| 最近记录: |