Git, Apache and HTTPS with a free certificate

From Wiki de Caballero
Revision as of 19:32, 22 June 2017 by Felipe (talk | contribs)
Jump to navigation Jump to search

Prerequisites

  • Ubuntu CLI understanding
  • Git knowledge
  • Ubuntu, this was tested using Ubuntu 16
  • Apache 2

Git using Apache

  1.  Install Apache
    sudo apt-get install apache2 apache2-utils
  2. Enable necessary modules
    a2enmod cgi alias env
  3. (Optional) Add user(s) to the htpasswd file.
  4. To allow to obtain a git repository using http, add the following to the apache2.conf
    # Path to the Git directory (inside the OS)
    SetEnv GIT_PROJECT_ROOT /git
    
    # Allows all projects to be served
    # If commented a file must exist in each available repository via Apache, file name: git-daemon-export-ok
    SetEnv GIT_HTTP_EXPORT_ALL
    
    # Defines the URL path where git is located, as seen via http
    # First param is path, second is os path to git-http-backend, don't forget the last slash
    ScriptAlias /git/ /usr/lib/git-core/git-http-backend/
    
    # Access configuration
    <Files "git-http-backend">
    	# Enable Basic HTTP Authentication
    	AuthType Basic
    	AuthName "Git Access"
    	AuthUserFile /git/.htpasswd
    	# The following line allows to obtain a repository (pull/fetch) without having a user/pass combo
    	# Comment it if user/pass are needed to obtain info as well
    	Require expr !(%{QUERY_STRING} -strmatch '*service=git-receive-pack*' || %{REQUEST_URI} =~ m#/git-receive-pack$#)
    	Require valid-user
    	# END Enable Basic HTTP Authentication
    </Files>

More sites:

Self signed Certificate

How Certificates work

More info:

How to

How to create a Root Certificate authority and child certificates:

Other sites:

Adding the certificate to Apache

Ensuring the right protocol:

Other links:

Configuring Git to use the self signed certificate

More sites:

Client based authentication using certificates in Apache

Used links:

Other links:

(Possibly) Giving Git a Client Certificate

More (possibly useful) info