# Git over HTTPS with basic authentication

4 messages from 2013-04-18 to 2013-04-19. Participants: Sebastian Schmidt, Matthieu Moy, Jeff King.
Thread: https://gitlist.dev/t/33538

## Sebastian Schmidt, 2013-04-18 19:47

Subject: Git over HTTPS with basic authentication
Message-ID: <1366314422.12299.3.camel@sibbo-laptop>
URL: https://gitlist.dev/e/1366314422.12299.3.camel%40sibbo-laptop

```
Why is git not working over HTTPS with basic authentication? I can clone
just fine, but when I try to push, it tells me

error: Cannot access URL https://..., return code 22
fatal: git-http-push failed

I have googled for an hour now, all I find is people that have the same
problem and the solution is always to use SSH.

Sibbo

```

## Matthieu Moy, 2013-04-18 19:54

Subject: Re: Git over HTTPS with basic authentication
Message-ID: <vpq8v4f62dj.fsf@grenoble-inp.fr>
URL: https://gitlist.dev/e/vpq8v4f62dj.fsf%40grenoble-inp.fr
In-Reply-To: <1366314422.12299.3.camel@sibbo-laptop>

```
Sebastian Schmidt <isibboi@gmail.com> writes:

> Why is git not working over HTTPS with basic authentication? I can clone
> just fine, but when I try to push, it tells me

What are you using on the server? Dumb HTTP works by serving the
repository files as static pages, which is fundamentally read-only. The
recommended way is to use smart-HTTP (see man git-http-backend, requires
Git on the server), and the alternative is to use webdav (much slower).

-- 
Matthieu Moy
http://www-verimag.imag.fr/~moy/

```

## Jeff King, 2013-04-18 20:43

Subject: Re: Git over HTTPS with basic authentication
Message-ID: <20130418204320.GA6888@sigill.intra.peff.net>
URL: https://gitlist.dev/e/20130418204320.GA6888%40sigill.intra.peff.net
In-Reply-To: <vpq8v4f62dj.fsf@grenoble-inp.fr>

```
On Thu, Apr 18, 2013 at 09:54:32PM +0200, Matthieu Moy wrote:

> Sebastian Schmidt <isibboi@gmail.com> writes:
> 
> > Why is git not working over HTTPS with basic authentication? I can clone
> > just fine, but when I try to push, it tells me
> 
> What are you using on the server? Dumb HTTP works by serving the
> repository files as static pages, which is fundamentally read-only. The
> recommended way is to use smart-HTTP (see man git-http-backend, requires
> Git on the server), and the alternative is to use webdav (much slower).

Yeah, this is definitely dumb http (since http-push is involved at all,
which the original error message showed).  Code 22 is curl's "there was
an HTTP error" code, but http-push annoyingly does not output the actual
HTTP error[1]. You can see more by setting GIT_CURL_VERBOSE=1 in the
environment.

Though if you know you did not set up WebDAV on the server, then we can
know that is the problem even without seeing the HTTP code. :)

-Peff

[1] The dumb-http push code is largely unloved and unmaintained at this
    point. Yet another reason to move to smart http.

```

## Jeff King, 2013-04-19 15:36

Subject: Re: Git over HTTPS with basic authentication
Message-ID: <20130419153639.GA14263@sigill.intra.peff.net>
URL: https://gitlist.dev/e/20130419153639.GA14263%40sigill.intra.peff.net
In-Reply-To: <1366361766.3873.4.camel@sibbo-laptop>

```
On Fri, Apr 19, 2013 at 10:56:06AM +0200, Sebastian Schmidt wrote:

> I tried switching to smart http now, but have the same error, I guess I
> did something wrong. It seems like it is getting 401, but I also noticed
> that info/refs is just an empty file. This is the config of my apache2:
> 
> SetEnv GIT_PROJECT_ROOT /crypt/git
> SetEnv GIT_HTTP_EXPORT_ALL
> ScriptAlias /git/ /usr/lib/git

This should point to /usr/lib/git/git-http-backend, which I think is the
source of your problems.

> <Directory /crypt/git>
> 	Allow from all
> 	Order deny,allow
> 	
> 	AuthType Basic
> 	AuthName "Git global"
> 	AuthUserFile /etc/apache2/auth/passwd
> 	AuthGroupFile /etc/apache2/auth/groups
> 	
> 	Require group git-shared
> </Directory>

I'm not sure this <Directory> match will do what you want, because from
Apache's perspective, it is hitting /usr/lib/git/git-http-backend on the
filesystem, and it is only git that actually touches the filesystem.

I think you want to use

  <Location /git>
     ...
  </Location>

instead. But I am not an Apache expert, so maybe it does work.

-Peff

```
