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

Posted

技术标签:

【中文标题】SSL 证书被拒绝尝试通过防火墙后的 HTTPS 访问 GitHub【英文标题】:SSL certificate rejected trying to access GitHub over HTTPS behind firewall 【发布时间】:2011-06-06 20:32:01 【问题描述】:

我被困在防火墙后面,因此必须使用 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://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证书是否OK。详情: 错误:14090086:SSL 例程:SSL3_GET_SERVER_CERTIFICATE:证书验证失败 * 过期清除 * 关闭连接 #0 * 即将 connect() 到 github.com 端口 443 (#0) * 正在尝试 207.97.227.239... * 成功设置证书验证位置: * CAfile:无 CApath:/usr/ssl/certs * SSL证书问题,验证CA证书是否OK。详情: 错误: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,否则我会被搞砸。

【问题讨论】:

如果我设置 http.sslVerify false 那么连接会安全吗?这是使用的好方法吗?在这两者之间,我们使用 pfsense 防火墙。现在,用户配置文件上的 .gitconfig 文件是空白的。 【参考方案1】:

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

更新:Install Net/ca-certificates package in cygwin(感谢 dirkjot)

有两种解决方案:

    实际安装根证书。 Curl guys extracted for you certificates from Mozilla。

cacert.pem 文件就是你要找的。该文件包含 > 250 个 CA 证书(不知道如何信任这个数量的 ppl)。您需要下载此文件,将其拆分为单独的证书,将它们放入 /usr/ssl/certs(您的 CA 路径)并为它们编制索引。

这里是如何做到这一点。使用 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

    忽略 SSL 证书验证。

    警告:禁用 SSL 证书验证具有安全隐患。 如果不验证 SSL/HTTPS 连接的真实性,恶意攻击者可以冒充受信任的端点(例如 GitHub或其他一些远程 Git 主机),您将容易受到Man-in-the-Middle Attack 的攻击。 在将其用作解决方案之前,请确保您完全了解安全问题您的威胁模型。

     $ env GIT_SSL_NO_VERIFY=true git clone https://github...
    

【讨论】:

不需要安装curl,使用wget即可:wget -O - http://curl.haxx.se/ca/cacert.pem | awk 'split_after==1n++;split_a fter=0 /-----END CERTIFICATE-----/ split_after=1 print &gt; "cert" n ".pem"' 我知道这是 cygwin,但如果有人使用 Centos 到这里,那么 .pem 应该去的 /etc/pki/tls/certs。 这个答案是错误的。只需安装 cygwin ca-certificates 软件包即可获取丢失的根证书。为什么这个答案会引起如此多的关注? 它对我有用。在运行 c_rehash 之前,需要 yum install openssl-perl(在 centos 中) 不要关闭 SSL 证书验证。这种情况在整个行业的工具和应用程序代码中经常发生。它让你向中间攻击的人敞开心扉。如果您要使用 SSL,请正确使用它。【参考方案2】:

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

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

git config --global http.sslVerify false

这将阻止 CURL 验证 HTTPS 认证。

仅适用于一个存储库:

git config http.sslVerify false

【讨论】:

如果您不想编辑全局设置(例如所有 repos),请排除 --global 能否请您说明一下这是多么危险? 这是个糟糕的主意。有理由验证证书。如果您不验证证书是否受信任,那么该证书可能由任何人生成,并且您可能容易受到中间人的攻击。 不要关闭 SSL 验证! 对于所有“不这样做”的人:当然这根本不是最安全的方法。但是,完全没有 SSL 是更好的选择!因为有些人只运行他们私有的简单 git 服务器,这对他们来说很好。当然,对于任何真正的安全性来说,它都是“不可行”的设置。最不安全的事情是通过网络发送纯字节。【参考方案3】:

我希望 Git 使用更新后的证书包,而无需替换我整个系统使用的证书包。以下是如何让 Git 使用我的主目录中的特定文件:

mkdir ~/certs
curl https://curl.haxx.se/ca/cacert.pem -o ~/certs/cacert.pem

现在更新 .gitconfig 以将其用于对等验证:

[http]
sslCAinfo = /home/radium/certs/cacert.pem

注意我使用的是绝对路径。 Git 在这里没有路径扩展,所以你不能使用~ 没有丑陋的杂物。或者,您可以跳过配置文件并通过环境变量GIT_SSL_CAINFO 设置路径。

要解决此问题,请设置GIT_CURL_VERBOSE=1。 Git 正在使用的 CA 文件的路径将显示在输出中以“CAfile:”开头的行上。

修改为从 http 更改为 https。

【讨论】:

对我来说,这是最好的答案:它适用于 unix(实际上是 NetBSD),它只影响 git 而不会影响系统上的其他任何东西,并且不需要 root/管理员访问权限。谢谢! 完美,甚至可以做得更好。我已经用这个文件替换了我在 Ubuntu 8.04 LTS 上的旧 /etc/ssl/certs/ca-certificates.crt,它神奇地起作用了! @Eric 感谢您提到 NetBSD,因为这意味着我找到了这个答案。 NetBSD 有点奇怪。我安装了 OpenSSL 包,但即使这样也没有得到证书,只是一个占位符目录。 +200 更棒的是,它也适用于我的 Ubuntu 机器。无需在 git 中禁用证书检查,只需执行此快速修复即可。 很好的答案,您可以使用以下命令跳过手动编辑 ~/.gitconfig 文件:git config --global http.sslCAinfo "$HOME/certs/cacert.pem"【参考方案4】:

如果您想解决证书问题,请随意跳过此答案。这个答案涉及通过防火墙的隧道 ssh,恕我直言,这是处理防火墙/代理事物的更好解决方案。

有一个比使用http访问更好的方法,那就是在ssh.github.com服务器的443端口上使用github提供的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 上使用它。

如果你愿意,可以read more about it in this blog post

【讨论】:

我放弃了让这个工作,但又看了一遍,让它工作了。将 .ssh/config 更改为 >Host ssh.github.com &gt;User oharab &gt;Hostname ssh.github.com &gt;Port 443 &gt;PreferredAuthentications publickey &gt;IdentityFile ~/.ssh/id_rsa 并使用 git clone git@ssh.github.com:oharab/log4vba.git 进行克隆,立即启动并运行。 我只是投反对票,因为下面的答案更有帮助,但不幸的是,*** 总是将接受的答案放在首位,即使它只是针对单一情况的答案。 无论如何我更新了答案,因为我发现通过 https 代理的 SSL 隧道仍然是一个更好的解决方案,而不是摆弄 HTTPS 证书或禁用它们并最终得到一个性能仍然较低的解决方案,用户友好且不太安全。好吧,很多赞成票证明我错了,但无论如何我在这件事上坚持我的意见。【参考方案5】:

请注意,为了让我能够正常工作(在 CentOS 5.6 上安装 RVM),我必须运行以下命令:

export GIT_SSL_NO_VERIFY=true

然后,将 RVM 安装程序卷曲到 bash 中的标准安装过程很有效 :)

【讨论】:

和 git config --global http.sslverify false 效果一样 这是非常危险的! SSL 证书验证的重点是保护您的代码在传输时不被篡改HTTPS!禁用它意味着恶意人员可以在您推送和获取代码时将漏洞和其他讨厌的东西插入到您的代码中! 如果我设置 http.sslVerify false 那么连接会安全吗?这是使用的好方法吗?在这两者之间我们使用 pfsense 防火墙 @Ravi 连接将技术上工作,是的,但它明确不是一个好主意。如果你的 git 源和本地机器都是内部的并且在你的组织的控制之下,它可能是passable,但根据 user456814 的评论,禁用验证会让你受到 MITM 攻击。【参考方案6】:

一个非常简单的解决方案:将 https:// 替换为 git://

使用 git://the.repository 而不是 https://the.repository 并且会起作用。

我在 Windows 上使用 TortoiseGit 遇到了这个问题,这解决了。

【讨论】:

我猜这是可行的,因为它不会验证 git:// 的 ssl。正如this answer above 中所述,禁用 ssl 验证存在安全风险。 @danijar 之所以可行是因为它甚至根本不使用 SSLgit:// 协议使用 SSH,它使用 SSH 公钥和私钥对进行身份验证和加密,而不是 SSL 证书。 @Cupcake git://使用 SSH。见The SSH Protocol 和The Git Protocol。 @nyuszika7h 哦,你是对的。我不断将git://git@github.com:user/project.git、which is SCP-ish syntax 混淆。 谢谢!这对我有用,使用带有 tinywall 防火墙的 msys2 git。【参考方案7】:

正如最受欢迎的答案(Alexey Vishentsev)所说:

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

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

您所要做的就是进入 cygwin 设置并包含包“ca-certificates”(它位于 Net 下)。这对我有用。

【讨论】:

cygwin git 错误显示 CAfile: /etc/ssl/ca-bundle.crt 而 cygwin ca-certificates 包安装 /usr/ssl/certs/ca-bundle.crt。因此,必须编辑~/.gitconfig 以指定位置:[http] 然后sslCAinfo = /usr/ssl/certs/ca-bundle.crt @maxpolk:我会做一个链接,但效果是一样的。这显然是 cygwin git 中的一个 bug,你考虑过提票吗? sudo ln -s /usr/ssl/certs/ca-bundle.crt /etc/ssl/ 截至今天 2013 年 5 月 23 日,cygwin git 在 https 上运行良好:如果你也碰巧有/记得安装 cygwin 的 ca-certificates 我是从this question 来的,表示可以在这里找到答案。但是,链接的答案和这个答案都不适合我; TortoiseSVN 不断输出error: SSL certificate problem, verify that the CA cert is OK. 我们究竟在哪里从包管理器安装 cygwin 安装文件? ca 证书是否需要在 Git 的 bin 文件夹中?【参考方案8】:

在将 SSL 验证设置为 false 时在 Windows 上进行克隆:

    git -c http.sslVerify=false clone http://example.com/e.git

如果你想克隆而不破坏你的全局设置。

【讨论】:

【参考方案9】:

我知道最初的问题列出了 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/

【讨论】:

这对我很有用;不过,正如 OP 所建议的那样,您可能应该首先备份原始文件。如果您使用的系统具有较旧的证书,那么当 Github 更新其证书时似乎会发生这种情况。 在 CentOS 5 上,我通过 yum update openssl 修复了它,这也更新了 ca-bundle。 如果您打算使用此选项,那么您应该在使用之前验证文件的 SHA-256 哈希值。您可以通过您正在设置的 curl 以外的其他方式获取sha256sum for the current file(例如已安全设置的另一台机器上的浏览器),然后将其与@987654325 的输出进行比较@ 以确保您获得了正确的文件。【参考方案10】:

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

其他发行版可能也是如此。

【讨论】:

嗯!这适用于 Red Hat linux 的旧安装(4.1.2)。谢谢!【参考方案11】:

如果您只想在 github.com 上使用 Cygwin git 客户端,则有一种更简单的方法,无需经历下载、提取、转换、拆分证书文件的麻烦。进行如下操作(我假设 Windows XP 带有 Cygwin 和 Firefox)

    在 Firefox 中,转到 github 页面(任意) 点击地址栏上的github图标显示证书 点击“更多信息”->“显示证书”-->“详细信息”,选择层次结构中从最上层开始的每个节点;对于他们每个人,单击“导出”并选择 PEM 格式: GTECyber​​TrustGlobalRoot.pem DigiCertHighAssuranceEVRootCA.pem DigiCertHighAssuranceEVCA-1.pem github.com.pem 将上述文件保存在本地驱动器中的某个位置,将扩展名更改为 .pem 并将它们移动到 Cygwin 安装中的 /usr/ssl/certs(Windows:c:\cygwin\ssl\certs) (可选)从 bash 运行 c_reshash。

就是这样。

当然,这只会安装一个证书层次结构,即 github 所需的那个层次结构。您当然可以将此方法用于任何其他网站,而无需安装 200 个您不(不一定)信任的网站的证书。

【讨论】:

【参考方案12】:

你可以在终端中试试这个命令:

git config --global http.sslVerify false

【讨论】:

【参考方案13】:

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

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

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

share.install 'ca-bundle.crt'

share 方法只是/usr/local/share 的别名,curl-ca-bundle 由Mozilla 提供。这是您在很多问题中看到的内容。希望这会有所帮助,因为如何在 Mac OS X 上解决这个问题并不是很简单。brew install curl 也不会让你得到太多,因为它是keg only and will not be linked(运行which curl 将始终输出/usr/bin/curl,这是您的操作系统附带的默认设置)。 This post may also be of some value.

您当然需要在安装 homebrew 之前禁用 SSL,因为它是一个 git 存储库。只需按照 curl 在 SSL 验证期间出错时所说的操作即可:

$ echo insecure >> ~/.curlrc

一旦你安装了homebrewcurl-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。

更新

我最近不得不补充:

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

更新

看起来curl-ca-bundle 是recently removed from homebrew。有一个recommendation here。

您需要将一些文件放入:

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

【讨论】:

您也可以尝试以下方法:export CURL_CA_BUNDLE=/usr/local/share/ca-bundle.crt 嗨,我遇到了类似的问题 (***.com/questions/20939105/…),当我尝试安装 home-brew 时也会出现同样的问题。在这种情况下我能做什么?在我的控制台中键入“git config --system http.sslcainfo /usr/local/share/ca-bundle.crt”返回“错误:无法锁定配置文件/Applications/Xcode.app/Contents/Developer/usr/etc/ gitconfig:没有这样的文件或目录”。感谢您的帮助! @Mathieu 这很奇怪。似乎您的系统指向相对于 XCode 的 git 版本。从终端运行“which git”的输出是什么?【参考方案14】:

我在 Solaris Express 11 中遇到了同样的问题。我花了一段时间,但我设法找到了需要放置证书的位置。根据/etc/openssl/openssl.cnf,证书的路径是/etc/openssl/certs。我放置了使用 Alexey 的上述建议生成的证书。

您可以在命令行上使用 openssl 验证一切是否正常:

openssl s_client -connect github.com:443

【讨论】:

【参考方案15】:

我使用 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

【讨论】:

这对我不起作用 - 我仍然遇到同样的错误。【参考方案16】:

从 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

【讨论】:

【参考方案17】:

如果你使用的是基于 debian 的操作系统,你可以简单地运行

apt-get install ca-certificates

【讨论】:

【参考方案18】:

我有一个树莓派

pi@raspbmc:~$ git clone http://github.com/andreafabrizi/Dropbox-Uploader .git 克隆到“Dropbox-Uploader”... 错误:访问 http://github.com/andreafabrizi/Dropbox-Uploader.git/info/refs 时出现 SSL CA 证书问题(路径?访问权限?) 致命:HTTP 请求失败

所以我是一个

sudo apt-get install ca-certificates

然后

git clone http://github.com/andreafabrizi/Dropbox-Uploader.git  

工作

【讨论】:

【参考方案19】:

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

machine github.com login myusername password mypass

查看这篇文章了解更多信息:

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

【讨论】:

这是一个证书验证问题,而不是一个身份验证问题——某些操作系统(包括 OP 运行的操作系统)的库存列表中没有包含颁发 github 新证书的 CA。跨度> 【参考方案20】:

通过在 Windows cmd 中临时禁用 GIT/curl ssl 验证来改进 RouMao 的解决方案:

set GIT_SSL_NO_VERIFY=true
git config --global http.proxy http://<your-proxy>:443

这个方案的好处是只在当前cmd窗口生效。

【讨论】:

这是非常危险的! SSL 证书验证的重点是保护您的代码在传输时不被篡改HTTPS!禁用它意味着恶意人员可以在您推送和获取代码时将漏洞和其他讨厌的东西插入到您的代码中!【参考方案21】:

你检查过你的时间了吗?

我绝对拒绝让我的 git 操作不安全,并且在尝试了这里提到的所有内容之后,让我感到震惊的是,证书未能通过验证的一个可能原因是日期错误(证书到期日期或 本地时钟)。

您可以通过在终端中输入date 轻松检查。在我的情况下(一个新的树莓派),本地时钟设置为 1970,所以一个简单的ntpdate -u 0.ubuntu.pool.ntp.org 修复了一切。对于 rPi,我还建议您将以下脚本放入日常 cron 作业中(例如 /etc/cron.daily/ntpdate):

#!/bin/sh
/usr/sbin/ntpdate -u 0.ubuntu.pool.ntp.org 1> /dev/null 2>&1

【讨论】:

【参考方案22】:

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

解决它:

我已经更新了安装在服务器上的 Curl 版本。在网站Download page of curl下载最新版本,按照安装流程Installation proceedings of curl

取回为服务器下发证书的权威机构的证书。

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

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

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

我希望这会对你们中的一些人有所帮助。

【讨论】:

【参考方案23】:

我尝试了一切,最终我查看了 hosts 文件,那里有一个 github 的随机条目。删除别名解决了问题

%systemroot%\system32\drivers\etc\hosts

【讨论】:

【参考方案24】:

我只是简单的禁用了SSL证书认证,使用了如下图所示的简单用户名密码登录

【讨论】:

【参考方案25】:

我只需要 Cygwin 和 git 的证书,所以我做了@esquifit 发布的内容。但是,我必须手动运行第 5 步,c_rehash 在我的系统上不可用。我遵循了这个指南:Installing CA Certificates into the OpenSSL framework。

【讨论】:

【参考方案26】:

我需要两件事:

    转到 cygwin setup 并包含包“ca-certificates”(它位于 Net 下)(如其他地方所示)。

    告诉 git 在哪里可以找到已安装的证书:

    GIT_SSL_CAINFO=/usr/ssl/certs/ca-bundle.crt GIT_CURL_VERBOSE=1 git ...

    (不需要详细选项)

    或永久存储选项:

    git config --global http.sslCAinfo /usr/ssl/certs/ca-bundle.crt

    混帐...

【讨论】:

【参考方案27】:

尝试使用命令

git config --global http.sslverify false

此命令将允许所有来自http的证书,这些证书不安全,但如果在专业环境中使用,请谨慎使用。

【讨论】:

答案是重复的,已经为该问题提供了三遍。【参考方案28】:

我有同样的问题。 证书导入或取消设置 ssl 验证的命令不起作用。 原来是网络代理的密码过期。 有代理配置条目。在我的 Windows 用户配置文件中的 .gitconfig 文件中。 我刚刚删除了整个条目,它又开始工作了。

【讨论】:

【参考方案29】:

在 Mac OSX 10.5 系统上,我能够通过一种简单的方法使其工作。首先,运行 github 程序和测试,这对我来说工作正常,表明我的证书实际上是好的。 https://help.github.com/articles/generating-ssh-keys

ssh -T git@github.com

然后我终于注意到遥控器的另一种 url 格式。我尝试了上面的其他人,但他们没有工作。 http://git-scm.com/book/ch2-5.html

git@github.com:MyGithubUsername/MyRepoName.git

一个简单的“git push myRemoteName”效果很好!

【讨论】:

【参考方案30】:

我最近(2014 年 7 月)遇到了类似的问题,并在 OS X (10.9.4) 上发现“DigiCert High Assurance EV Root CA”证书已过期(尽管我还有另一个未过期的证书)。

    打开钥匙串访问 搜索“DigiCert”证书 查看菜单 > 显示过期证书

我找到了两个名为“DigiCert High Assurance EV Root CA”的证书,一个在 2031 年 11 月到期,一个在 2014 年 7 月(几天前)到期。删除过期的证书为我解决了这个问题。

希望这会有所帮助。

【讨论】:

以上是关于SSL 证书被拒绝尝试通过防火墙后的 HTTPS 访问 GitHub的主要内容,如果未能解决你的问题,请参考以下文章

c#web api - 使用HTTPS运行Web应用程序 - 添加了证书并启用了SSL,但是连接被拒绝了

邮递员“自签名 SSL 证书被阻止”

XCode:尝试下载开发证书时的 UNIX [权限被拒绝]

linux nginx ssl证书怎么配置

firewalld拦截,导致安装ssl证书后https无法访问

一些客户端接受 SSL 证书;其他人拒绝它