SSL证书被拒绝尝试通过防火墙后的HTTPS访问GitHub

…衆ロ難τιáo~ 提交于 2020-02-26 07:40:18

我被困在防火墙后面,因此必须使用HTTPS来访问我的GitHub存储库。 我在Windows XP上使用cygwin 1.7.7。

我尝试将遥控器设置为https://username@github.com/username/ExcelANT.git ,但是在提示输入密码时提示我,但是一旦输入密码,它就什么也不做。 https://username:<password>github.com/username/ExcelANT.git并从头开始克隆空的https://username:<password>github.com/username/ExcelANT.git ,但是每次给我相同的错误

错误:SSL证书问题,请验证CA证书是否正确。 细节:
错误:14090086:SSL例程:SSL3_GET_SERVER_CERTIFICATE:访问https://github.com/username/ExcelANT.git/info/refs时证书验证失败

开启GIT_CURL_VERBOSE=1给我

*关于connect()到github.com端口443(#0)
*尝试207.97.227.239 ... *成功设置证书验证位置:
* CAfile:无
CApath:/ usr / ssl / certs
* SSL证书问题,请验证CA证书是否正确。 细节:
错误:14090086:SSL例程:SSL3_GET_SERVER_CERTIFICATE:证书验证失败
*过期已清除
*关闭连接#0
*关于connect()到github.com端口443(#0)
*尝试207.97.227.239 ... *成功设置证书验证位置:
* CAfile:无
CApath:/ usr / ssl / certs
* SSL证书问题,请验证CA证书是否正确。 细节:
错误:14090086:SSL例程:SSL3_GET_SERVER_CERTIFICATE:证书验证失败
*过期已清除
*关闭连接#0
错误:SSL证书问题,请验证CA证书是否正确。 细节:
错误:14090086:SSL例程:SSL3_GET_SERVER_CERTIFICATE:访问https://github.com/username/ExcelANT.git/info/refs时证书验证失败

fatal: HTTP request failed

这是我的防火墙,cygwin还是什么问题?

我没有在Git配置中设置HTTP代理,但是它是一个需要NTLM身份验证而不是基本的ISA服务器,因此除非有人知道如何强制git使用NTLM,否则我会感到困惑。


#1楼

尝试使用.netrc文件,它将通过https进行身份验证。 在您的主目录中创建一个文件调用.netrc并将其放入其中:

machine github.com login myusername password mypass

有关更多信息,请参见此帖子:

https://plus.google.com/u/0/104462765626035447305/posts/WbwD4zcm2fj


#2楼

最受欢迎的答案(由Alexey Vishentsev撰写)有:

问题是您的系统上没有安装任何证书颁发机构证书。 并且这些证书无法与cygwin的setup.exe安装在一起。

但是,最后一个断言是错误的(现在,或者一直以来,我都不知道)。

您所要做的就是进入cygwin设置,并包括软件包“ ca-certificates”(位于Net下)。 这帮了我大忙。


#3楼

在CentOS 5.x上,一个简单的yum update openssl更新了openssl软件包,该软件包更新了系统ca-bundle.crt文件并为我解决了该问题。

其他发行版也可能如此。


#4楼

如果您使用的是Mac OS X,则可以通过homebrew安装ca-cert-bundle:

$ brew install curl-ca-bundle
$ git config --system http.sslcainfo /usr/local/share/ca-bundle.crt

公式通过以下方式将证书捆绑包安装到您的共享中:

share.install 'ca-bundle.crt'

share方法只是/usr/local/share的别名,而curl-ca-bundleMozilla提供。 这就是您在许多问题中引用的内容。 希望这会有所帮助,因为在Mac OS X上如何实现该方法不是很简单brew install curl也不会给您带来很多好处,因为它只是桶装的,不会链接 (运行which curl总是输出/usr/bin/curl ,这是操作系统随附的默认设置)。 这篇文章可能也有价值

当然,您需要在安装homebrew之前禁用SSL,因为它是git仓库。 只要执行curl在SSL验证期间出错时所说的内容,并:

$ echo insecure >> ~/.curlrc

一旦您与curl-ca-bundle一起安装了homebrew ,请删除.curlrc并尝试在github上克隆一个.curlrc 。 确保没有错误,一切都会顺利进行。

注意:如果您使用.curlrc ,请在完成测试.curlrc其从系统中删除。 该文件可能会导致严重问题,因此请暂时使用它,并要谨慎使用。 如果您忘记从系统中清除它, brew doctor会抱怨)。

注意:如果您更新git的版本,则将需要重新运行此命令,因为系统设置将被清除(它们相对于基于版本的git二进制文件存储)。

因此,运行后:

$ brew update
$ brew upgrade

如果您获得了新版本的git,则只需重新运行即可:

$ git config --system http.sslcainfo /usr/local/share/ca-bundle.crt

然后您会准备就绪。

最后,如果您有新版本的git,请运行:

$ git config -l --system

应该给你一个错误的思路

fatal: unable to read config file '/usr/local/Cellar/git/1.8.2.2/etc/gitconfig'

这是您需要告诉git Mozilla ca-bundle在哪里的提示。

更新:

.curlrc可能会或可能不会解决您的问题。 无论如何,无论是否需要手动下载,只要在计算机上安装Mozilla ca-bundle即可。 这才是重要的。 收到ca捆绑包后,您就可以使用了。 只需运行git config命令并将git指向ca-bundle。

更新

我最近不得不添加:

由于我正在使用zsh export CURL_CA_BUNDLE=/usr/local/share/ca-bundle.crt到我的.zshenv点文件中。 git config选项在大多数情况下都有效,但是当通过SSL rvm get stable github(例如rvm get stable )时,我仍然遇到证书问题。 @Maverick在他的评论中指出了这一点,但以防万一有人错过它或认为他们除了运行git config --system....命令外不必导出此环境变量。 谢谢,希望对您有所帮助。

更新

好像最近刚从自制酒中移除curl-ca-bundle 。 这里有一个建议

您将需要将一些文件放入:

$(brew --prefix)/etc/openssl/certs


#5楼

我在必须管理的协作开发平台上配置Git时遇到了同样的问题。

要解决它:

  • 我已经更新了服务器上安装的Curl的发行版。 在网站上下载最新版本卷曲的下载页面 ,然后按照安装程序卷曲的安装程序

  • 取回为服务器提供证书的授权证书。

  • 将此证书添加到curl使用的CAcert文件中。 在我的服务器上,它位于/etc/pki/tls/certs/ca-bundle.crt

  • 通过编辑.gitconfig文件并设置sslcainfo路径,将git配置为使用此证书文件。 sslcainfo= /etc/pki/tls/certs/ca-bundle.crt

  • 在客户端计算机上,您还必须获取证书并配置.gitconfig文件。

希望对您有所帮助。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!