Search code examples
gitsslcygwincertificateca

How to add an enterprise certificate authority (CA) to git on cygwin (and some linux distros)


When fetching with git on Cygwin you get:

Fetching origin
fatal: unable to access 'https://.../...git': SSL certificate problem: self signed certificate in certificate chain
error: Could not fetch origin

The certificate was added to /etc/ssl/certs/ca-bundle.crt and other bundle files, but on the next Cygwin update the problem reappeared.


Solution

  • git-remote-https will read the following files for ca certificates:

    /etc/ssl/certs/ca-bundle.crt
    /etc/pki/ca-trust/extracted/openssl/ca-bundle.trust.crt
    

    If you edit these files, they will be overwritten each time the Cygwin setup is run and there is an update for the ca-certificates package.

    The correct/proper solution is to add the certificate to the pick up directory and run the pickup script, update-ca-trust:

    curl -sL http://ca.pdinc.us  > /etc/pki/ca-trust/source/anchors/ca.pdinc.us.pem \
    && update-ca-trust
    

    The post install script for the ca-certificates package will automatically rerun the update-ca-trust script on every upgrade. For more information:

    man update-ca-trust