I'm stuck behind a firewall so have to use HTTPS to access my GitHub repository. I'm using cygwin 1.7.7 on Windows XP.
I've tried setting the remote to https://username@github.com/username/ExcelANT.git
, but pushing prompts for a password, but doesn't do anything once I've entered it.
https://username:<password>github.com/username/ExcelANT.git
and cloning the empty repo from scratch but each time it gives me the same error
error: SSL certificate problem, verify that the CA cert is OK. Details:
error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed while accessing https://github.com/username/ExcelANT.git/info/refs
Turning on GIT_CURL_VERBOSE=1
gives me
* About to connect() to github.com port 443 (#0)
* Trying 207.97.227.239... * successfully set certificate verify locations:
* CAfile: none
CApath: /usr/ssl/certs
* SSL certificate problem, verify that the CA cert is OK. Details:
error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed
* Expire cleared
* Closing connection #0
* About to connect() to github.com port 443 (#0)
* Trying 207.97.227.239... * successfully set certificate verify locations:
* CAfile: none
CApath: /usr/ssl/certs
* SSL certificate problem, verify that the CA cert is OK. Details:
error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed
* Expire cleared
* Closing connection #0
error: SSL certificate problem, verify that the CA cert is OK. Details:
error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed while accessing https://github.com/username/ExcelANT.git/info/refs
fatal: HTTP request failed
Is this a problem with my firewall, cygwin or what?
I hadn't set the HTTP proxy in the Git config, however it's an ISA server that needs NTLM authentication, not basic, so unless anyone knows how to force git to use NTLM, I'm scuppered.
On a Mac OSX 10.5 system, I was able to get this to work with a simple method. First, run the github procedures and the test, which worked ok for me, showing that my certificate was actually ok. https://help.github.com/articles/generating-ssh-keys
Then I finally noticed yet another url format for remotes. I tried the others, above and they didn't work. http://git-scm.com/book/ch2-5.html
A simple "git push myRemoteName" worked great!
If you're on Mac OS X, you can install the ca-cert-bundle via
homebrew
:The formula installs the cert bundle to your share via:
The
share
method is just an alias to/usr/local/share
, and the curl-ca-bundle is provided byMozilla
. It's what you see being referenced in a lot of issues. Hope this helps as it's not very straightforward about how to approach this on Mac OS X.brew install curl
isn't going to get you much either as it's keg only and will not be linked (runningwhich curl
will always output/usr/bin/curl
, which is the default that ships with your OS). This post may also be of some value.You'll of course need to disable SSL before you install
homebrew
since it's a git repo. Just do what curl says when it errors out during SSL verification and:Once you get
homebrew
installed along with thecurl-ca-bundle
, delete.curlrc
and try cloning a repo out on github. Ensure that there are no errors and you'll be good to go.NOTE: If you do resort to
.curlrc
, please remove it from your system the moment you're done testing. This file can cause major issues, so use it for temporary purposes and with caution.brew doctor
will complain in case you forget to purge it from your system).NOTE: If you update your version of git, you'll need to rerun this command since your system settings will be wiped out (they're stored relative to the git binary based on version).
So after running:
If you get a new version of git, then just rerun:
And you'll be all set.
Lastly if you have a new version of git, running:
should give you an error along the lines of
fatal: unable to read config file '/usr/local/Cellar/git/1.8.2.2/etc/gitconfig'
that's your tip that you need to tell git where the Mozilla ca-bundle is.
UPDATE:
.curlrc
may or may not be the remedy to your problem. In any case, just get the Mozilla ca-bundle installed on your machine whether you have to manually download it or not. That's what's important here. Once you get the ca-bundle, you're good to go. Just run the git config command and point git to the the ca-bundle.UPDATE
I recently had to add:
export CURL_CA_BUNDLE=/usr/local/share/ca-bundle.crt
to my.zshenv
dot file since I'm usingzsh
. thegit config
option worked for most cases, but when hitting github over SSL (rvm get stable
for example), I still ran into certificate issues. @Maverick pointed this out in his comment, but just in case someone misses it or assumes they don't necessarily need to export this environment variable in addition to running thegit config --system....
command. Thanks and hope this helps.UPDATE
It looks like the curl-ca-bundle was recently removed from homebrew. There is a recommendation here.
You will want to drop some files into:
$(brew --prefix)/etc/openssl/certs
The problem is that you do not have any of Certification Authority certificates installed on your system. And these certs cannot be installed with cygwin's setup.exe.
Update: Install Net/ca-certificates package in cygwin (thanks dirkjot)
There are two solutions:
Actually install root certificates. Curl guys extracted for you certificates from Mozilla.
cacert.pem
file is what you are looking for. This file contains > 250 CA certs (don't know how to trust this number of ppl). You need to download this file, split it to individual certificates put them to /usr/ssl/certs (your CApath) and index them.Here is how to do it. With cygwin setup.exe install curl and openssl packages execute:
Important: In order to use
c_rehash
you have to installopenssl-perl
too.Ignore SSL certificate verification.
WARNING: Disabling SSL certificate verification has security implications. Without verification of the authenticity of SSL/HTTPS connections, a malicious attacker can impersonate a trusted endpoint (such as GitHub or some other remote Git host), and you'll be vulnerable to a Man-in-the-Middle Attack. Be sure you fully understand the security issues and your threat model before using this as a solution.
Note that for me to get this working (RVM install on CentOS 5.6), I had to run the following:
export GIT_SSL_NO_VERIFY=true
and after that, the standard install procedure for curling the RVM installer into bash worked a treat :)