oha*_*rab 380 git ssl cygwin github ssl-certificate
我被困在防火墙后面,所以必须使用HTTPS来访问我的GitHub存储库.我在Windows XP上使用cygwin 1.7.7.
我已经尝试将遥控器设置为https://username@github.com/username/ExcelANT.git,但是提示输入密码,但是一旦我输入密码就没有做任何事情.
https://username:<password>github.com/username/ExcelANT.git并从头开始克隆空仓库,但每次它给我同样的错误
错误:SSL证书问题,验证CA证书是否正常.详细信息:
错误:14090086:SSL例程:SSL3_GET_SERVER_CERTIFICATE:访问https时出现证书验证失败: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
*关于连接()到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时出现证书验证失败:https://github.com/username/ExcelANT.git/info/refs
fatal: HTTP request failed
这是我的防火墙,cygwin还是什么问题?
我没有在Git配置中设置HTTP代理,但是它是一个需要NTLM身份验证的ISA服务器,而不是基本身份,所以除非有人知道如何强制git使用NTLM,否则我会被打破.
小智 517
问题是您没有在系统上安装任何证书颁发机构证书.并且这些证书不能与cygwin的setup.exe一起安装.
更新:在cygwin中安装Net/ca-certificates包(感谢dirkjot)
有两种解决方案:
实际上安装根证书.Curl家伙为你提取Mozilla的证书.
cacert.pem文件是你要找的.此文件包含> 250个CA证书(不知道如何信任此数量的ppl).您需要下载此文件,将其拆分为单个证书,将它们放入/ usr/ssl/certs(您的CApath)并对其进行索引.
这是怎么做的.使用cygwin setup.exe安装curl和openssl包执行:
$ cd /usr/ssl/certs
$ curl http://curl.haxx.se/ca/cacert.pem |
  awk '{print > "cert" (1+n) ".pem"} /-----END CERTIFICATE-----/ {n++}'
$ c_rehash
重要提示:为了使用c_rehash您还必须安装openssl-perl.
忽略SSL证书验证.
警告:禁用SSL证书验证具有安全隐患.如果不验证SSL/HTTPS连接的真实性,恶意攻击者可以冒充受信任的端点(例如GitHub或其他一些远程Git主机),并且您将容易受到中间人攻击.在将此作为解决方案之前,请确保完全了解安全问题和威胁模型.
$ env GIT_SSL_NO_VERIFY=true git clone https://github...
Yi *_*hao 424
注意:禁用SSL验证具有安全隐患.当您使用Git通过网络传输数据时,它允许中间人攻击.在将此作为解决方案之前,请确保完全了解安全隐患.或者更好的是,安装根证书.
一种方法是禁用SSL CERT验证:
git config --global http.sslVerify false
这将阻止CURL验证HTTPS认证.
仅适用于一个存储库:
git config http.sslVerify false
ken*_*ada 109
我希望Git使用更新的证书包而不替换我整个系统使用的证书包.以下是如何让Git在我的主目录中使用特定文件:
mkdir ~/certs
curl http://curl.haxx.se/ca/cacert.pem -o ~/certs/cacert.pem
现在更新.gitconfig以使用它进行对等验证:
[http]
sslCAinfo = /home/radium/certs/cacert.pem
注意我正在使用绝对路径.Git在这里没有路径扩展,所以你不能没有~丑陋的kludge.或者,您可以跳过配置文件并通过环境变量设置路径GIT_SSL_CAINFO.
要解决此问题,请设置GIT_CURL_VERBOSE=1.Git正在使用的CA文件的路径将显示在输出中以"CAfile:"开头的行上.
Pet*_*ans 56
如果您想修复证书问题,请随意跳过此答案.这个答案涉及通过防火墙隧道ssh,这是恕我直言,更好的解决方案来处理防火墙/代理的东西.
有一种比使用http访问更好的方法,那就是使用github在ssh.github.com服务器的端口443上提供的ssh服务.
我们使用一种叫做开瓶器的工具.这可以通过CygWin(通过cygwin主页设置)和Linux使用您喜欢的打包工具.对于MacOSX,它至少可以从macports和brew中获得.
命令行如下:
$ corkscrew <proxyhost> <proxyport> <targethost> <targetport> <authfile>
proxyhost和proxyport是https代理的坐标.targethost和targetport是隧道到的主机的位置.authfile是一个文本文件,其中包含由冒号分隔的代理服务器用户名/密码的1行
例如:
abc:very_secret
安装使用"普通"ssh协议进行git通信
通过将此添加到此~/.ssh/config技巧可用于正常的ssh连接.
Host github.com
  HostName ssh.github.com
  Port 443
  User git
  ProxyCommand corkscrew <proxyhost> <proxyport> %h %p ~/.ssh/proxy_auth
现在你可以通过ssh-ing到gitproxy来测试它
pti@pti-laptop:~$ ssh github.com
PTY allocation request failed on channel 0
Hi ptillemans! You've successfully authenticated, but GitHub does not provide shell access.
       Connection to github.com closed.
pti@pti-laptop:~$
(注意:如果你以前从未登录过github,ssh会要求将服务器密钥添加到已知的hosts文件中.如果你是偏执狂,建议验证RSA指纹到github网站上显示的那个上传了你的密钥).
当您需要使用其他密钥访问存储库时,例如将您的私人帐户与您的专业帐户分开,此方法的一个小变体就是这种情况.
# 
# account dedicated for the ACME private github account 
#
Host acme.github.com
  User git
  HostName ssh.github.com
  Port 443
  ProxyCommand corkscrew <proxyhost> <3128> %h %p ~/.ssh/proxy_auth
  IdentityFile ~/.ssh/id_dsa_acme
请享用!
我们多年来一直在Linux,Mac和Windows上使用它.
如果您愿意,可以在此博客文章中阅读更多相关信息
小智 41
请注意,为了让我能够正常工作(在CentOS 5.6上安装RVM),我必须运行以下命令:
export GIT_SSL_NO_VERIFY=true
之后,将RVM安装程序卷入bash的标准安装程序很有效:)
klo*_*oma 40
一个非常简单的解决方案:用git://替换https://
使用git://the.repository而不是https://the.repository会起作用.
我在Windows上使用TortoiseGit遇到了这个问题,这解决了它.
dir*_*jot 31
最流行的答案(Alexey Vishentsev)有:
问题是您没有在系统上安装任何证书颁发机构证书.并且这些证书不能与cygwin的setup.exe一起安装.
然而,最后一个断言是错误的(现在,或者一直是,我不知道).
你所要做的就是去cygwin设置并包括'ca-certificates'包(它在Net下).这对我有用.
Her*_*III 16
我知道最初的问题列出了Cygwin,但这里是CentOS的解决方案:
curl http://curl.haxx.se/ca/cacert.pem -o /etc/pki/tls/certs/ca-bundle.crt
资料来源:http://eric.lubow.org/2011/security/fixing-centos-root-certificate-authority-issues/
Way*_*ker 14
在CentOS 5.x上,一个简单的yum update openssl更新了openssl包,它更新了系统ca-bundle.crt文件并为我解决了问题.
其他分布也是如此.
Fla*_*ape 14
要在将SSL验证设置为false时在Windows上进行克隆:
    git -c http.sslVerify=false clone http://example.com/e.git
如果您想要克隆而不需要考虑全局设置.
esq*_*fit 13
如果你想要做的只是使用github.com的Cygwin git客户端,那么有一个更简单的方法,无需经历下载,提取,转换,拆分证书文件的麻烦.继续如下(我假设使用Cygwin和Firefox的Windows XP)
而已.
当然,这只会安装一个证书层次结构,即github所需的层次结构.您当然可以将此方法与任何其他站点一起使用,而无需安装200个您不一定信任的站点证书.
如果您使用的是Mac OS X,则可以通过以下方式安装ca-cert-bundle homebrew:
$ 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.这就是你在许多问题中被引用的内容.希望这brew install curl会有所帮助,因为它在Mac OS X上如何处理它并不是非常简单.不会因为它只是桶而且不会链接(运行which curl将始终输出/usr/bin/curl,这是您的随附的默认值) OS).这篇文章也可能有一些价值.
您当然需要在安装之前禁用SSL,homebrew因为它是一个git repo.在SSL验证过程中出现错误时,只需执行curl所说的内容:
$ echo insecure >> ~/.curlrc
一旦你homebrew安装了curl-ca-bundle,删除.curlrc并尝试在github上克隆一个repo.确保没有错误,你会很高兴.
注意:如果您确实使用.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-bundle,你就可以去了.只需运行git config命令并将git指向ca-bundle即可.
UPDATE
我最近不得不补充:
export CURL_CA_BUNDLE=/usr/local/share/ca-bundle.crt.zshenv我正在使用我的点文件zsh.该git config选项适用于大多数情况,但是当通过SSL(rvm get stable例如)访问github时,我仍遇到证书问题.@Maverick在他的评论中指出了这一点,但万一有人错过了它或者假设除了运行git config --system....命令之外他们不一定需要导出这个环境变量.谢谢,希望这会有所帮助.
UPDATE
您需要将一些文件放入:
$(brew --prefix)/etc/openssl/certs
小智 6
I've been having this same problem for Solaris Express 11. It took me a while but I managed to find where the certificates needed to be placed. According to /etc/openssl/openssl.cnf, the path for certificates is /etc/openssl/certs. I placed the certificates generated using the above advice from Alexey.
You can verify that things are working using openssl on the commandline:
openssl s_client -connect github.com:443
我使用apt-cyg(一个类似于apt-get的优秀安装程序)修复了这个问题,以便轻松下载ca-certificates(包括Git等等):
apt-cyg install ca-certificates
注意:应首先安装apt-cyg.您可以从Windows命令行执行此操作:
cd c:\cygwin
setup.exe -q -P wget,tar,qawk,bzip2,subversion,vim
关闭Windows cmd,然后打开Cygwin Bash:
wget rawgit.com/transcode-open/apt-cyg/master/apt-cyg
install apt-cyg /bin
小智 5
在Raspberry Pi上我有:
git clone http://github.com/andreafabrizi/Dropbox-Uploader.git
输出:
Cloning into 'Dropbox-Uploader'...
error: Problem with the SSL CA cert (path? access rights?) while accessing http://  github.com/andreafabrizi/Dropbox-Uploader.git/info/refs
fatal: HTTP request failed
所以我做了一个
sudo apt-get install ca-certificates
进而
git clone http://github.com/andreafabrizi/Dropbox-Uploader.git
工作过
从 GitHub 生成访问令牌并保存它,因为它不会再次出现。
git -c http.sslVerify=false clone https://<username>:<token>@github.com/repo.git
或者,
git config --global http.sslVerify false
git clone https://github.com/repo.git