github:服务器证书验证失败

时间:2016-03-05 23:35:37

标签: git github debian

我刚刚在其中创建了一个github帐户和一个存储库,但在尝试使用推荐网址创建本地工作副本时

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

我收到类似

的错误
  

致命:无法访问&#39; https://github.com/<user>/<project>.git&#39;:服务器证书验证失败。 CAfile:/home/<user>/.ssl/trusted.pem CRLfile:none

我在Debian Jessie,我本来希望Debian和GitHub都能提供/依赖一系列普遍接受的CA,但显然我的系统并不信任GibHub的证书。

任何解决这个问题的简单方法(没有经常推荐的&#34; GIT_SSL_NO_VERIFY = true&#34; hack和类似的解决办法)?

编辑:

其他信息:

  • 已安装ca-certificate包。
  • 安装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关于git https.sslCAinfo选项的建议让我走上正轨 - 我刚刚将下载的cacert.org CA添加到我的trusted.pem,现在git不再抱怨了

7 个答案:

答案 0 :(得分:41)

首先确保您在/etc/ssl/certs上的Debian上安装了证书。

如果没有,请重新安装:

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提到另一个潜在原因(in the comments):

  

是时钟。 NTP服务器已关闭,系统时钟设置不正确,我没有注意到或想到最初检查,错误的时间导致验证失败。

Certificates are time sensitive

答案 1 :(得分:39)

您还可以通过输入以下内容来禁用SSL验证(如果项目不需要除登录/密码之外的高级别安全性):

git config --global http.sslverify false

享受git:)

答案 2 :(得分:10)

它也可以是自签名证书等。全局关闭SSL验证是不安全的。您可以安装证书,使其对系统可见,但证书应该完全正确。

或者您可以使用一次配置参数进行克隆,因此命令将为:

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

GIT会记住错误值,您可以在<project>/.git/config文件中查看。

答案 3 :(得分:4)

当尝试从Linux控制台从Windows子系统上的Github克隆存储库时,我也遇到此错误:

致命:无法访问“ http://github.com/docker/getting-started.git/”:服务器证书验证失败。 CAfile:/etc/ssl/certs/ca-certificates.crt CRLfile:无

@VonC在该线程上的解决方案对我不起作用。

Fabian Lee's article中的解决方案为我解决了此问题:

openssl s_client -showcerts -servername github.com -connect github.com:443 </dev/null 2>/dev/null | sed -n -e '/BEGIN\ CERTIFICATE/,/END\ CERTIFICATE/ p'  > github-com.pem
cat github-com.pem | sudo tee -a /etc/ssl/certs/ca-certificates.crt

答案 4 :(得分:1)

另一个可能的原因是您的计算机的时钟未同步(例如,在Raspberry Pi上)。使用以下方法检查当前日期/时间:

$ date

如果日期和/或时间不正确,请尝试使用以下方式进行更新:

$ sudo ntpdate -u time.nist.gov

答案 5 :(得分:0)

尝试使用网址连接到repositroy:http://github.com/<user>/<project>.git (http除了https)

在你的情况下,你应该像这样克隆:

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

答案 6 :(得分:0)

对我来说简单

sudo apt-get update

解决了问题。这是一个时钟问题,使用此命令可以将其重置为当前日期/时间,并且一切正常