ChatGPT解决这个技术问题 Extra ChatGPT

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

我被困在防火墙后面,所以必须使用 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: none 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,否则我会被吓到。

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

D
Daniel Stenberg

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

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

有两种解决方案:

实际安装根证书。 Curl 家伙从 Mozilla 为您提取证书。

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

忽略 SSL 证书验证。警告:禁用 SSL 证书验证具有安全隐患。如果不验证 SSL/HTTPS 连接的真实性,恶意攻击者可以冒充受信任的端点(例如 GitHub 或其他远程 Git 主机),您将容易受到中间人攻击。在将其用作解决方案之前,请确保您完全了解安全问题和威胁模型。 $ env GIT_SSL_NO_VERIFY=true git clone https://github...


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

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

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

git config --global http.sslVerify false

这将阻止 CURL 验证 HTTPS 认证。

仅适用于一个存储库:

git config http.sslVerify false

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

我希望 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"
y
yourcomputergenius

如果您想解决证书问题,请随意跳过此答案。这个答案处理通过防火墙的隧道 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 将要求将服务器密钥添加到已知主机文件中。如果您偏执,建议您将 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 >User oharab >Hostname ssh.github.com >Port 443 >PreferredAuthentications publickey >IdentityFile ~/.ssh/id_rsa 并使用 git clone git@ssh.github.com:oharab/log4vba.git 立即启动并运行它。
我只是投反对票,因为下面的答案更有帮助,但不幸的是,stackoverflow 总是将接受的答案放在首位,即使它只是针对单一情况的答案。
无论如何,我更新了答案,因为我发现通过 https 代理的 SSL 隧道仍然是一个更好的解决方案,而不是摆弄 HTTPS 证书或禁用它们并最终得到一个性能仍然较低、用户友好且安全性较低的解决方案。好吧,很多赞成票证明我错了,但无论如何我在这件事上坚持我的意见。
s
seanp2k

请注意,为了让我能够正常工作(在 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 源和本地计算机都是内部的并且在您的组织的控制下,它可能是可以通过的,但根据 user456814 的评论,禁用验证会使您面临 MITM 攻击。
k
klodoma

一个非常简单的解决方案:将 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 ProtocolThe Git Protocol
@nyuszika7h 哦,你是对的。我一直将 git://git@github.com:user/project.gitwhich is SCP-ish syntax 混淆。
谢谢!这对我有用,使用带有 tinywall 防火墙的 msys2 git。
d
dirkjot

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

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

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

你所要做的就是去 cygwin setup 并包含包'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-certificates 是否需要在 Git 的 bin 文件夹中?
F
FlavorScape

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

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

如果您想在不破坏全局设置的情况下进行克隆。


A
Anne

我知道最初的问题列出了 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,然后将其与 {2 } 以确保您获得了正确的文件。
M
Mrchief

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

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


百胜!这适用于 Red Hat linux 的旧安装(4.1.2)。谢谢!
D
DotJava

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

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

而已。

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


r
reza_khalafi

您可以在终端中尝试此命令:

git config --global http.sslVerify false


C
Community

如果您使用的是 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-bundleMozilla 提供。这是您在很多问题中看到的内容。希望这会有所帮助,因为如何在 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(例如 rvm get stable)访问 github 时,我仍然遇到证书问题。 @Maverick 在他的评论中指出了这一点,但以防万一有人错过它或假设他们除了运行 git config --system.... 命令之外不一定需要导出此环境变量。谢谢,希望这会有所帮助。

更新

看起来 curl-ca-bundlerecently removed from homebrew。有一个recommendation here

您需要将一些文件放入:

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


您还可以尝试以下方法:export CURL_CA_BUNDLE=/usr/local/share/ca-bundle.crt
嗨,我遇到了类似的问题 (stackoverflow.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”的输出是什么?
s
svassr

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

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

openssl s_client -connect github.com:443

Z
Zombo

我使用 apt-cyg(类似于 apt-get 的出色安装程序)解决了这个问题,以便轻松下载 ca 证书(包括 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

这对我不起作用 - 我仍然遇到同样的错误。
P
Patrick

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

apt-get 安装 ca 证书


D
Dry_accountant_09

从 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

P
Parimal Raj

在我的树莓派上

pi@raspbmc:~$ git clone http://github.com/andreafabrizi/Dropbox-Uploader .git Cloning into 'Dropbox-Uploader'... 错误:访问时 SSL CA 证书(路径?访问权限?)有问题http://github.com/andreafabrizi/Dropbox-Uploader.git/info/refs 致命:HTTP 请求失败

所以身份证

sudo apt-get install ca-certificates

然后

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

工作过


T
Travis Reeder

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

machine github.com login myusername password mypass

有关更多信息,请参阅此帖子:

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


这是一个证书验证问题,而不是身份验证问题——某些操作系统(包括 OP 运行的那个)没有 CA 颁发 github 的新证书包含在库存列表中。
M
Marshal

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

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

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


这是非常危险的! SSL 证书验证的全部意义在于保护您的代码在通过 HTTPS 传输时不被篡改!禁用它意味着恶意人员可以在您推送和获取代码时将漏洞和其他讨厌的东西插入您的代码中!
D
Deiu

你检查过你的时间吗?

我绝对拒绝让我的 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

u
user229044

尝试使用命令

git config --global http.sslverify false

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


答案是重复的,并且已经为该问题提供了三遍。
M
Mrchief

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

要解决它:

我已经更新了安装在服务器上的 Curl 版本。在网站上下载最新版本 curl的下载页面并按照安装程序进行 curl的安装程序

取回为服务器提供证书的颁发机构的证书。

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

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

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

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


G
GenericEventHandler

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

%systemroot%\system32\drivers\etc\hosts


0
0x3bfc

https://i.stack.imgur.com/p9Bbx.png


S
Sonata

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


u
user2896631

我需要两件事:

转到 cygwin 设置并包含包“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 git ...


s
sap

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


A
AnneTheAgile

在 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”效果很好!


c
craigb

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

打开 Keychain Access 搜索“DigiCert”的证书 查看菜单 > 显示过期证书

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

希望这可以帮助。