Gitlab mit Lets Encrypt SSL Zertifikat absichern

Gitlab kann man mit wenig Aufwand auf dem eigenen Server nutzen. Ich habe das bei mir so gemacht da das gehostete Gitlab manchmal sehr langsam sein kann und weil ich mich wohler fühle wenn ich meinen Quellcode auf einem eigenen Server liegen haben. Jedoch hat das selbstinstallierte Gitlab nach der Installation standardmäßig keine SSL Verschlüsselung, diese kannmit einem kostenlosen Lets Encrypt Zertifikat aber leicht nachgerüstet werden.

Wer es noch nicht getan hat, kann über diese Seite Gitlab installieren. Vorraussetzung für die weiteren Schritte ist dass Gitlab isntalliert wurde und über Port 80 erreichbar ist.

Als nächstes installieren wir git, da wir das benötigen um den Lets Encrypt Client zu nutzen

cd /root  
git clone https://github.com/letsencrypt/letsencrypt

Bevor wir das Zertifikat beantragen können, wird noch eine Lets Encrypt Konfiguration erstellt in der wir alle wichtigen Daten definieren.

mkdir letsencrypt-config  
vi letsencrypt-config/gitlab.ini

Der Inhalt der Datei:

# Lets Encrypt Config für gitlab

# wir wollen den webroot Authenticator nutzen. 
authenticator = webroot
webroot-path = /var/www/letsencrypt

# die Domain unter der Gitlab aufrufbar ist
domains = gitlab.yourdomain.de

# die eigene Mailadresse mit der das Zertifikat beantragt wird
email = your@email.de

# wir wollen einen 4096 bit RSA key anstatt eines 2048 keys
rsa-key-size = 4096

Nun müssen wir noch das Verzeichnis anlegen dass für die webroot Authentifizierung verwendet wird

mkdir -p /var/www/letsencrypt

Als nächstes passen wir die gitlab Konfiguration an, damit diese unsere neuen Zertifikate nutzt. Dazu öffnen wir die Datei **/etc/gitlab/gitlab.rb** und ändern folgende Werte. Dabei muss auch darauf geachtet werden dass die entsprechenden Zeilen nicht auskommentiert sind.

nginx['enable'] = true
nginx['redirect_http_to_https'] = true
nginx['ssl_certificate']= "/etc/letsencrypt/live/gitlab.yourdomain.de/fullchain.pem"
nginx['ssl_certificate_key'] = "/etc/letsencrypt/live/gitlab.yourdomain.de/privkey.pem"

Folgende Zeile muss neu eingefügt werden

nginx['custom_gitlab_server_config']="location ^~ /.well-known {\n alias /var/www/letsencrypt/.well-known;\n}\n"

Damit die SSL Beantragung funktioniert muss Gitlab nun erstmal rekonfiguriert werden.

gitlab-ctl reconfigure

Als nächstes nutzen wir die vorhin angelegte Lets Encrypt Konfiguration um das SSL Zertfikat zu erstellen

/root/letsencrypt/letsencrypt-auto certonly -c /root/letsencrypt-config/gitlab.ini

Beim ersten Aufruf werden vor der eigentlichen SSL Beantragung noch evtl. fehlende Abhänigkeiten installiert.

Nun können wir wieder die gitlab Konfiguration unter /etc/gitlab/gitlab.rb öffnen und die URL auf https ändern.

external_url 'https://gitlab.yourdomain.de'

Das war es auch schon. Gitlab muss abschließen noch rekonfiguriert werden:

gitlab-ctl reconfigure

Ab nun ist die Gitlab Installation unter https erreichbar.

Lets Encrypt Zertifikate sind immer nur 90 Tage gültig. Damit das Zertifikat jeden Monat automatisch erneuert wird, richten wir einen Cronjob ein der sich darum kümmert:

0 0 1 * * /root/.local/share/letsencrypt/bin/letsencrypt certonly -c /root/letsencrypt-config/gitlab.ini --renew-by-default

2 Kommentare

  1. Kann es sein das sich hier jetzt was geändert hat. Habe mein Gitlab System aktualisiert (Debian Jessie) und erhalte jetzt die Meldung „gesicherte Verbindung fehlgeschlagen“. Das Update ist ohne Fehlermeldung durchgeführt worden. Das bestehende LE Zertifikat war noch gültig.
    Nachdem ich den Ursprünglichen Zustand wieder hergestellt habe funktioniert alles tadellos.

    • Habe um das zu testen meine Gitlab Installation von Version 9.4.4 auf 10.0.2 aktualisiert, dabei verlief alles problemlos.

      Evtl. findest du in den Logs etwas?

Kommentar hinterlassen

E-Mail Adresse wird nicht veröffentlicht.


*