我被困在防火墙后面,所以必须使用HTTPS来访问我的GitHub存储库。我在Windows上使用cygwin 1.7.7。
我尝试过将遥控器设置为https://username@github.com/username/ExcelANT.git,但按提示输入密码,但一旦输入密码就什么也不做。https://username:<password>github.com/username/ExcelANT.git和从零开始克隆空回购,但每次都会给出相同的错误。
错误: SSL证书问题,请验证CA证书是否正常。详细信息: 错误:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate验证在访问https://github.com/username/ExcelANT.git/info/refs时失败
打开GIT_CURL_VERBOSE=1让我
*即将连接()到github.com端口443 (#0) *尝试207.97.227.239.*成功设置证书验证位置: * CAfile:无 CApath: /usr/ssl/certs * SSL证书问题,请验证CA证书是否正常。详细信息: 错误:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate验证失败 *过期已获批准 *关闭连接#0 *即将连接()到github.com端口443 (#0) *尝试207.97.227.239.*成功设置证书验证位置: * CAfile:无 CApath: /usr/ssl/certs * SSL证书问题,请验证CA证书是否正常。详细信息: 错误:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate验证失败 *过期已获批准 *关闭连接#0 错误: SSL证书问题,请验证CA证书是否正常。详细信息: 错误:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate验证在访问https://github.com/username/ExcelANT.git/info/refs时失败
fatal: HTTP request failed我的防火墙出问题了吗,锡格温?
我没有在Git配置中设置HTTP代理,但是它是一个ISA服务器,需要NTLM身份验证,而不是基本身份验证,因此,除非有人知道如何强制git使用NTLM,否则我就崩溃了。
发布于 2010-09-23 09:50:04
如果您想解决证书问题,可以跳过这个答案。这个答案涉及穿越防火墙的ssh,这是一种更好的解决防火墙/代理问题的解决方案。
有一种比使用http访问更好的方法,即在ssh.github.com服务器的端口443上使用github提供的ssh服务。
我们用了一种叫做瓶塞的工具。CygWin (通过从cygwin主页安装)和Linux都可以使用您最喜欢的打包工具。对于MacOSX,它至少可以从宏端口和brew中获得。
命令行如下:
$ corkscrew <proxyhost> <proxyport> <targethost> <targetport> <authfile>proxyhost和proxyport是https代理的坐标。目标和目标端口是要隧道到的主机的位置。authfile是一个文本文件,其中一行包含由冒号分隔的代理服务器用户名/密码。
例如:
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将要求将服务器密钥添加到已知的主机文件中。如果您疑神疑鬼,建议验证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上使用了多年。
如果你想你可以在这篇博文中读到更多关于它的信息。
发布于 2010-12-15 20:52:27
问题是您的系统上没有安装任何证书颁发机构证书。而且这些证书不能安装cygwin的setup.exe。
更新:在cygwin中安装Net/ca-证书包 (谢谢迪尔科特)
有两种解决办法:
cacert.pem文件是您要寻找的文件。此文件包含>250个CA证书(不知道如何信任这个数量的ppl)。您需要下载该文件,将其拆分为单独的证书,将它们放到/usr/ssl/certs (您的CApath)中,并对它们进行索引。
以下是如何做这件事。使用cygwin setup.exe安装curl和openssl包执行:
<!-- language: lang-bash -->
$ 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。
发布于 2012-01-06 08:28:26
注意:禁用SSL验证具有安全含义,。当您使用Git在网络上传输数据时,它允许中间人攻击。在将此用作解决方案之前,请确保您完全了解安全含义。或者更好的是,安装根证书。
一种方法是禁用SSL CERT验证:
git config --global http.sslVerify false这将防止卷曲真实的HTTPS认证。
仅适用于一个储存库:
git config http.sslVerify falsehttps://stackoverflow.com/questions/3777075
复制相似问题