首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >拒绝通过防火墙后的HTTPS访问GitHub。

拒绝通过防火墙后的HTTPS访问GitHub。
EN

Stack Overflow用户
提问于 2010-09-23 09:41:46
回答 31查看 657.7K关注 0票数 402

我被困在防火墙后面,所以必须使用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时失败

代码语言:javascript
运行
复制
fatal: HTTP request failed

我的防火墙出问题了吗,锡格温?

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

EN

回答 31

Stack Overflow用户

回答已采纳

发布于 2010-09-23 09:50:04

如果您想解决证书问题,可以跳过这个答案。这个答案涉及穿越防火墙的ssh,这是一种更好的解决防火墙/代理问题的解决方案。

有一种比使用http访问更好的方法,即在ssh.github.com服务器的端口443上使用github提供的ssh服务。

我们用了一种叫做瓶塞的工具。CygWin (通过从cygwin主页安装)和Linux都可以使用您最喜欢的打包工具。对于MacOSX,它至少可以从宏端口和brew中获得。

命令行如下:

代码语言:javascript
运行
复制
$ corkscrew <proxyhost> <proxyport> <targethost> <targetport> <authfile>

proxyhost和proxyport是https代理的坐标。目标和目标端口是要隧道到的主机的位置。authfile是一个文本文件,其中一行包含由冒号分隔的代理服务器用户名/密码。

例如:

代码语言:javascript
运行
复制
abc:very_secret

使用“普通”ssh协议进行git通信的安装

通过将其添加到~/.ssh/config中,这个技巧可以用于正常的ssh连接。

代码语言:javascript
运行
复制
Host github.com
  HostName ssh.github.com
  Port 443
  User git
  ProxyCommand corkscrew <proxyhost> <proxyport> %h %p ~/.ssh/proxy_auth

现在,您可以通过ssh-ing到gitproxy测试它的工作性能。

代码语言:javascript
运行
复制
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网站上,您上传您的密钥)。

当您需要使用另一个密钥访问存储库时,这种方法有一个细微的变化,例如将您的私人帐户与您的专业帐户分开。

代码语言:javascript
运行
复制
# 
# 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上使用了多年。

如果你想你可以在这篇博文中读到更多关于它的信息。

票数 63
EN

Stack Overflow用户

发布于 2010-12-15 20:52:27

问题是您的系统上没有安装任何证书颁发机构证书。而且这些证书不能安装cygwin的setup.exe。

更新:在cygwin中安装Net/ca-证书包 (谢谢迪尔科特)

有两种解决办法:

  1. 实际安装根证书。卷发人从Mozilla那里为你提取证书

cacert.pem文件是您要寻找的文件。此文件包含>250个CA证书(不知道如何信任这个数量的ppl)。您需要下载该文件,将其拆分为单独的证书,将它们放到/usr/ssl/certs (您的CApath)中,并对它们进行索引。

以下是如何做这件事。使用cygwin setup.exe安装curl和openssl包执行:

代码语言:javascript
运行
复制
<!-- 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

  1. 忽略SSL证书验证。 警告:禁用SSL证书验证会影响安全性。如果不验证SSL/HTTPS连接的真实性,恶意攻击者就可以模拟可信端点(例如GitHub或其他远程Git主机),您将容易受到中间人攻击的攻击。一定要充分理解安全问题和您的威胁模型,然后再使用它作为解决方案。 $ env GIT_SSL_NO_VERIFY=true git克隆https://github..
票数 533
EN

Stack Overflow用户

发布于 2012-01-06 08:28:26

注意:禁用SSL验证具有安全含义,。当您使用Git在网络上传输数据时,它允许中间人攻击。在将此用作解决方案之前,请确保您完全了解安全含义。或者更好的是,安装根证书。

一种方法是禁用SSL CERT验证:

代码语言:javascript
运行
复制
git config --global http.sslVerify false

这将防止卷曲真实的HTTPS认证。

仅适用于一个储存库:

代码语言:javascript
运行
复制
git config http.sslVerify false
票数 444
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3777075

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档