git clone--SSL certificate problem: unable to get local issuer certificate

1,660 阅读2分钟

小知识,大挑战!本文正在参与“程序员必备小知识”创作活动

前言

今天在开启新项目的时候,在 git 仓库复制了仓库地址,打开 iTerm2 然后满怀热情的在命令行中输入了 git clone ’****仓库地址*****‘,就在我以为可以正常执行拉取代码的时候,现实给了我一个耳光,我遇到了一个提示: fatal: unable to access '克隆代码的仓库地址': SSL certificate problem: unable to get local issuer certificate,一个我从来没有遇到过提示,接下来就是进行谷歌查询。

错误原因

git 开启了 SSL 验证。 无法获取本地颁发者证书

在某些情况下,当您使用客户端 SSL 证书时,当您向安全 HTTPS 源发出请求时,您必须共享 SSL 证书以验证您的身份。因此,如果遇到“ SSL 证书问题:无法获得本地颁发者证书”错误,则表明系统上的根证书工作不正常。

解决方案

更改php.ini(维护SSL)

  • 转到 curl.haxx.se/ca/cacert.p… 并下载 cacert.pem
  • cacert.pem 复制到你的 openssl/zend 版本,例如 “/usr/local/openssl-0.9.8/certs/cacert.pem”。
  • 在 php.ini 文件中,通过添加 “cainfo = '/usr/local/openssl-0.9.8/certs/cacert.pem'” 来修改 CURL 配置
  • 重新启动 PHP 并查看 CURL 现在是否能够读取 HTTPS URL。

不要更改php.ini(维护SSL)

输入下面代码:

$ch = curl_init();
$certificate_location = '/usr/local/openssl-0.9.8/certs/cacert.pem';
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, $certificate_location);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, $certificate_location);

禁用SSL

输入下面代码:

$ch = curl_init();
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);

关闭SSL(个人推荐)

git config --global http.sslVerify false

前面两种方式来是安全的解决方案,后面两种是通过禁止SSL跳过问题,官方肯定是不推荐的。

但是作为个人开发者来说,直接关闭SSL确实是最方便的解决方案。

个人还是比较推荐 关闭SSL,简单粗暴。

结语

如果这篇文章帮到了你,欢迎点赞👍和关注⭐️。

文章如有错误之处,希望在评论区指正🙏🙏。