在新手使用git clone的时候,可能会遇到一下这个报错:
SSL certificate problem: self signed certificate in certificate chain
SSL certificate problem: unable to get local issuer certificate
这时候比较简单粗暴的做法是直接不启用SSL认证,命令我为你准备好了
git config --global http.sslVerify false
但这么一来就会带来安全风险。比较好的solution是为Git加上受信证书。下面我们来看看一个例子。
使用Chrome打开GitHub,点击代表安全认证的锁头图标。
在弹出的菜单列表中,点击Certificate

在我的示例中,您会注意到GitHub上方的两个认证路径。
我们需要对两个认证路径执行以下步骤。
单击第一个PaloAltoTrust(或您的等效)证书。
在同一窗口上,单击“View Certificate”按钮。

单击新窗口上的“Detail”选项卡,然后单击“Copy to File”按钮

在Export Wizard 点击“Next”

选择 Base 64 Encoded

随便选择一个临时存放证书文件的路径,点击“next”,然后“Finish”。你可以在结束后将这些文件删除。

注意:如果GItHub上有多个层级的证书列表,请重复以上步骤,将各个层级的证书导出来
Git使用名为的文件ca-bundle.crt列出所有受信任的证书。我们可以通过在终端窗口中键入以下内容来找到该文件:
git config --list --show-origin
在列出的信息中,我们可以找到ca-bundle.crt文件的存放路径,这个例子中的路径是C:\Program Files (x86)\Git\mingw32\ssl\certs\ca-bundle.crt。让我们将其复制到新位置。我要把我的复制到C:\Users\Matt\ca-bundle.crt。您可以通过GUI或如下所示的终端来执行此操作:
copy "C:\Program Files (x86)\Git\mingw32\ssl\certs\ca-bundle.crt" c:\Users\Matt\ca-bundle.crt
您将需要将Matt更改为您的用户名。
使用您喜欢的文本编辑器,您可以打开ca-bundle.crt复制的.cer文件和从浏览器导出的文件。将.cer包括----BEGIN CERTIFICATE---和在内的整个文本复制----END CERTIFICATE---到ca-bundle.crt文件底部。对.cer导出的所有文件执行此操作.
我们还有最后一步要完成。回到终端中,将您复制的内容添加ca-bundle.crt到Git的配置中。
git config --global http.sslCAInfo C:/Users/Matt/ca-bundle.crt
现在,您应该能够使用git clone而不损害安全性的情况下访问GitHub 。试一试。
如果您发现此帖子有帮助,请与他人分享。这是我能要求的最好的感谢,这给了我不断写作的动力!
[转载自](https://mattferderer.com/fix-git-self-signed-certificate-in-certificate-chain-on-windows
)
网友评论