我被困在防火墙后面,因此必须使用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-bundle由Mozilla
提供。 这就是您在许多问题中引用的内容。 希望这会有所帮助,因为在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使用的CAcert文件中。 在我的服务器上,它位于
/etc/pki/tls/certs/ca-bundle.crt
。通过编辑.gitconfig文件并设置sslcainfo路径,将git配置为使用此证书文件。
sslcainfo= /etc/pki/tls/certs/ca-bundle.crt
在客户端计算机上,您还必须获取证书并配置.gitconfig文件。
希望对您有所帮助。
来源:oschina
链接:https://my.oschina.net/u/3797416/blog/3165714