我刚刚在其中创建了一个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和类似的解决办法)?
编辑:
其他信息:
删除〜/ .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不再抱怨了
答案 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服务器已关闭,系统时钟设置不正确,我没有注意到或想到最初检查,错误的时间导致验证失败。
答案 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
解决了问题。这是一个时钟问题,使用此命令可以将其重置为当前日期/时间,并且一切正常