How to solve SSL certificate: self signed certificate when cloning repo from github?

57,552

Solution 1

You're overthinking this. Git requires the SSH key to do the transfer. In order for this to work, you need an account on GitHub. If you have already generated an SSH key pair for other sites, you can reuse that one. All you need to do is log into GitHub.com and copy it there in your settings panel.

If you don't have an account, make one. If you haven't generated a key pair, that's simple:

ssh-keygen -t rsa -C "[email protected]"

Then copy the key to your settings in GitHub.com

There are instructions all over the place on how to do this in various ways. I have a self-signed cert and I was able to clone the repo you listed.

Solution 2

You can disable SSL verification using the below command

git config --global http.sslVerify false
Share:
57,552
BRabbit27
Author by

BRabbit27

Updated on August 02, 2021

Comments

  • BRabbit27
    BRabbit27 almost 3 years

    I just installed git for windows and tried to clone glew's repo like this

    $ git clone https://github.com/nigels-com/glew.git
    

    But I got the following error

    Cloning into 'glew'...
    fatal: unable to access 'https://github.com/nigels-com/glew.git/': SSL certificate problem: self signed certificate
    

    I've seen people running into this problem and some possible workarounds.

    First try

    $ git -c http.sslVerify=false clone https://github.com/nigels-com/glew.git
    Cloning into 'glew'...
    fatal: unable to access 'https://github.com/nigels-com/glew.git/': Empty reply from server
    

    Second try

    $ git config --global http.sslVerify false
    $ git clone https://github.com/nigels-com/glew.git
    Cloning into 'glew'...
    fatal: unable to access 'https://github.com/nigels-com/glew.git/': Empty reply from server
    

    Then I checked for http.sslcainfo entry in the config files

    $ git config --system --list
    credential.helper=manager
    
    $ git config --global --list
    https.proxy=<proxy-address>
    http.sslverify=false
    

    System and global config files does not have that entry. So I tried the following which I don't know what file is reading and try to unset it.

    $ git config --list
    core.symlinks=false
    core.autocrlf=true
    core.fscache=true
    color.diff=auto
    color.status=auto
    color.branch=auto
    color.interactive=true
    help.format=html
    http.sslcainfo=C:/Program Files/Git/mingw64/ssl/certs/ca-bundle.crt
    diff.astextplain.textconv=astextplain
    rebase.autosquash=true
    credential.helper=manager
    http.sslverify=false
    
    $ git config --unset http.sslcainfo
    fatal: not in a git directory
    

    Tried with global and system

    $ git config --global --unset http.sslcainfo
    $ git clone https://github.com/nigels-com/glew.git
    Cloning into 'glew'...
    fatal: unable to access 'https://github.com/nigels-com/glew.git/': SSL certificate problem: self signed certificate
    
    $ git config --system --unset http.sslcainfo
    error: could not lock config file C:\Program Files\Git\mingw64/etc/gitconfig: Permission denied
    error: could not lock config file C:\Program Files\Git\mingw64/etc/gitconfig: Invalid argument
    

    I still cannot clone that github repo. Any other idea I can try to fix this problem? What am I missing?

  • BRabbit27
    BRabbit27 almost 8 years
    A couple of weeks ago I remember being able to clone repos without that. Would that mean if I want to clone repos from GitLab or BitBucket I must create an account and copy my ssh key to each account? Something's missing here ...
  • Roman
    Roman almost 8 years
    Wrong, SSL has nothing to do with SSH.
  • kgui
    kgui almost 7 years
    yea, this is wrong. This does not solve the problem but, rather uses a different technology to get the repo.
  • Vishwa Ratna
    Vishwa Ratna almost 5 years
    wrong answer, its a shame that this answer is accepted here.