Der über das HTTP Protokoll unverschlüsselte Zugriff auf die kollaborative Versionsverwaltung Gitlab ist sicherheitstechnisch ein No-Go und gefährdet die Sicherheit der verwalteten Projekte. Mit wenigen Schritten und einem kostenlosen Zertifikat von Let’s Encrypt aktiviert man einen gesicherten Zugang.

Let’s Encrypt Klienten installieren

sudo mkdir /root/letsencrypt
sudo git clone https://github.com/letsencrypt/letsencrypt /root/letsencrypt/client/
sudo /root/letsencrypt/client/letsencrypt-auto --help

LE Konfiguration für GitLab

cat <<EOF | sudo tee /root/letsencrypt/gitlab.ini
authenticator = webroot
webroot-path = /home/git/gitlab/public/
domains = gitlab.domain.tld
email = mplx-letsencrypt@donotreply.at
rsa-key-size = 4096
agree-tos
EOF

Zertifikat erstellen

sudo /root/letsencrypt/client/letsencrypt-auto certonly -c /root/letsencrypt/gitlab.ini
> certificate and chain have been saved at /etc/letsencrypt/live/gitlab.domain.tld/fullchain.pem
> account credentials have been saved in your Certbot configuration directory at /etc/letsencrypt

Webserver NGINX konfigurieren

sudo cp /home/git/gitlab/lib/support/nginx/gitlab-ssl /etc/nginx/sites-available/gitlab-ssl
sudo ln -s /etc/nginx/sites-available/gitlab-ssl /etc/nginx/sites-enabled/gitlab-ssl
sed -i 's/YOUR_SERVER_FQDN/gitlab.domain.tld/g' /etc/nginx/sites-enabled/gitlab-ssl
sudo mkdir /etc/nginx/ssl/
sudo ln -s /etc/letsencrypt/live/gitlab.domain.tld/fullchain.pem /etc/nginx/ssl/gitlab.crt
sudo ln -s /etc/letsencrypt/live/gitlab.domain.tld/privkey.pem /etc/nginx/ssl/gitlab.key-size

Gitlab konfigurieren

port 443, https true

sudo -u git -H vi /home/git/gitlab/config/gitlab.yml

http to https

sudo -u git -H vi /home/git/gitlab-shell/config.yml

Gitlab via HTTP entfernen

rm /etc/nginx/sites-enabled/gitlab

Assets vorkompilieren

cd /home/git/gitlab
sudo -u git -H bundle exec rake assets:clean assets:precompile cache:clear RAILS_ENV=production

Gitlab neu starten

sudo service gitlab restart
sudo service nginx restart

Zertifikat erneuern

sudo /root/.local/share/letsencrypt/bin/letsencrypt certonly -c /root/letsencrypt/gitlab.ini --renew-by-default
sudo /etc/init.d/nginx restart