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