设置 http.sslCAInfo 后无法克隆 Github 存储库

Can't clone a Github repo after setting http.sslCAInfo

我必须管理一个私人 git 存储库,因此我创建了一个 .pem 并将 http.sslCAInfo 设置为 .pem 的路径。但是现在我不能再从 Github 的仓库中克隆了:

fatal: unable to access 'https://github.com/KidSysco/jquery-ui-month-picker/': server certificate verification failed. CAfile: /home/marco/sources/git_certs/cert.pem CRLfile: none

http.sslCAInfo的默认值是多少?我试图将其设置为“”,但现在我得到

fatal: unable to access 'https://github.com/KidSysco/jquery-ui-month-picker/': Problem with the SSL CA cert (path? access rights?)

好的,我用

解决了
git config --global http.sslCAInfo /etc/ssl/certs/ca-certificates.crt

您只能使用

配置当前仓库
git config http.sslCAInfo path/to/local.pem

您还可以运行以下命令获取openssl正在使用的"right"目录(在Linux/Git Bash下)。这会在引号中输出目录,因此您不需要做任何特殊的魔术来处理空格并且可以将其直接传递给另一个命令。

openssl version -d | awk '{ print }'

因此您可以通过以下方式修复 git 配置:

git config --global http.sslCAInfo $(openssl version -d | awk '{ print }')

我在 Windows 上遇到了与 SourceTree 相同的问题。

  1. 不推荐,但很容易解决:

    Disable certificate check
    git config --system http.sslverify false
    
  2. 将您的证书添加到 ca-bundle.crt (它位于:c:\Users\\AppData\Local\Atlassian\SourceTree\git_local\mingw32\ssl\certs\ca-bundle.crt)

如果您已经将 http.sslCAInfo 设置为您的自签名证书并希望设置回原始证书:

    git config --global http.sslCAInfo /mingw32/ssl/certs/ca-bundle.crt 

我在 windows 中的用户帐户的根目录下找到了 .gitconfig 文件。您可能需要在 windows 资源管理器中打开 'show hidden files' 或为 .(点)文件打开 linux。

然后我删除了这两行以将 sslCAInfo 恢复为默认值:

[http]
    sslCAInfo = *whatever you set here*

那么我建议按照这些说明进行操作 https://mattferderer.com/fix-git-self-signed-certificate-in-certificate-chain-on-windows

基本上将证书导出为 base64 证书,在您的 git 安装中找到 ca-bundle.crt,编辑该文件,将导出的 base64 证书中的文本复制到 ca-bundle.crt.