github上:服务器证书验证失败

问题描述:

我刚刚创建其中一个GitHub的账户和一个仓库,而是试图通过github上:服务器证书验证失败

git clone https://github.com/<user>/<project>.git 

创建使用recommende URL本地工作副本时,我得到这样

错误

致命:无法访问'https://github.com/<user>/<project>.git':服务器证书验证失败。凭证档案错误:/家庭/ <用户> /.ssl/trusted.pem CRLfile:无

我在Debian的杰西,我本来期望Debian和GitHub上既提供/依靠的是先进的普遍接受CA,但显然我的系统不信任GibHub的证书。

任何简单的方法来解决这个问题(没有经常推荐的“GIT_SSL_NO_VERIFY = true”黑客和类似的解决方法)?

编辑:

其他信息:

  • 的CA证书软件包安装。
  • 安装cacert.org的证书为@VonC建议的 没有任何改变。
  • 我个人的〜/ .ssl/trusted.pem文件的确包含几个条目,但要 说实话,我不记得是哪所添加的证书从...
  • 来到时,删除〜/。 SSL/trusted.pem,git的错误消息

    改变
    fatal: unable to access 'https://github.com/tcrass/scans2jpg.git/': Problem with the SSL CA cert (path? access rights?) 
    

编辑:

@ VonC的咨询,以确定混帐https.sslCAinfo选项让我在正确的轨道上 - 我刚才添加的将cacert.org CA下载到我的电脑上rusted.pem,现在git不再抱怨了。

+0

提到的CA文件是什么?也许你的SSL没有找到电子证书?你安装了它们吗? – Reactormonk

+0

我编辑了答案,以确保git引用这些ca. – VonC

首先确保您的证书已安装在您的Debian中/etc/ssl/certs

如果没有,重新安装:

sudo apt-get install --reinstall ca-certificates 

自那package does not include root certificates,添加:

sudo mkdir /usr/local/share/ca-certificates/cacert.org 
sudo wget -P /usr/local/share/ca-certificates/cacert.org http://www.cacert.org/certs/root.crt http://www.cacert.org/certs/class3.crt 
sudo update-ca-certificates 

确保您的git不会引用这些CA:

git config --global http.sslCAinfo /etc/ssl/certs/ca-certificates.crt 

Jason C mentio ns另一个潜在原因:(in the comments):

这是时钟。 NTP服务器关闭,系统时钟设置不正确,我没有注意到或者认为最初需要检查,并且不正确的时间导致验证失败。

Certificates are time sensitive

+0

我也收到相同的消息。具体来说,我说致命:无法访问'网址/':服务器证书验证失败。 CAfile:/etc/ssl/certs/ca-certificates.crt CRLfile:无。我通过ssh使用git。这会有所作为吗? –

+0

@CodedContainer是的确实:CA(证书颁发机构)验证TLS证书的公钥(在https中使用)。 ssCAinfo对ssh url没有影响。你确定你的远程URL不*以https开头吗? – VonC

+0

嗯。我今天突然开始出现这个错误,只在一个设备(一个Raspberry Pi)上,自上次工作以来一直没有被触及。我跑完了这个答案中的所有步骤,并且抓取了一些新的证书,但是我仍然得到了同样的错误(git URL确实以https开头,它在gitlab.com上)。任何其他想法? –

您也可以通过键入禁用SSL验证:

git config --global http.sslverify false

谢谢:)

+1

Downvoted当然:这可以完成测试,但除此之外,您不应该禁用ssl验证。 – VonC

+0

为什么不!如果你想改变登录/密码的认证类型! 如果您有确认“义务”的可靠来源:不要停用ssl,谢谢您将其提供给我。 感谢您的评论:) – mkebri

+1

这不是一个义务,只是一个(非常强)的建议。 SSL证书是关于您和*已知*端点之间的端到端加密的。取消激活ssl证书会使你受到MiM攻击(https://en.wikipedia.org/wiki/Man-in-the-middle_attack) – VonC

它也可以自签名证书等关闭SSL验证全球范围内是不安全的。您可以安装证书,以便系统可以看到证书,但证书应该完全正确。

或者你可以用一个时间配置参数克隆,因此命令将是:

git clone -c http.sslverify=false https://myserver/<user>/<project>.git; 

GIT会记住假值,您可以检查它在<project>/.git/config文件。