SSL : Gitlab + LetsEncrypt (acme.sh) = <3
Valentin Brosseau | 26-01-2018[Edit] Le support de LetsEncrypt est maintenant natif. Consulter l’article
GitLab c'est bien, mais Gitlab en SSL c'est mieux ! Un petit article rapide pour vous montrer la simplicité de mise en place des certificats SSL gratuit fourni par LetsEncrypt.
La première étape acme.sh
Le plus simple sous Linux pour générer des certificats LetsEncrypt c'est le client en bash Acme.sh :
curl https://get.acme.sh | sh
Ou via le sources :
git clone https://github.com/Neilpang/acme.sh.git
cd ./acme.sh
./acme.sh --install
😎 Pas besoin d’être root.
Configurer GitLab
Maintenant que nous avons notre client « Acme LetsEncrypt », il faut configurer GitLab pour qu'il accepte la connexion entrante venant de LetsEncrypt et qui va valider que vous êtes le propriétaire du nom de domaine. Pour ça il va falloir modifier la configuration « par défaut » de GitLab.
Il faut éditer le fichier /etc/gitlab/gitlab.rb pour ajouter la configuration suivante :
nginx['custom_gitlab_server_config'] = "location ^~ /.well-known { root /var/www/letsencrypt; }" mattermost_nginx['custom_gitlab_mattermost_server_config'] = "location ^~ /.well-known { root /var/www/letsencrypt; }"
⚠️ Dans mon cas je vais valider également un certificat pour le Mattermost inclus dans GitLab.
Maintenant que la configuration est modifiée il faut la faire prendre en compte par GitLab :
$ gitlab-ctl reconfigure
On va également créer un dossier qui va recevoir le fichier .key et .crt.
$ mkdir -p /etc/gitlab/ssl/
Demander un certificat
Pas grand-chose à faire, il suffit juste de taper la bonne commande :
$ acme.sh --issue -d gitlab.votre_domaine.fr -d mattermost.votre_domaine.fr -w /var/www/letsencrypt --keypath /etc/gitlab/ssl/cert.key --certpath /etc/gitlab/ssl/cert.crt --fullchain-file /etc/gitlab/ssl/fullchain.crt
Et voilà, normalement les fichiers sont disponibles dans le dossier /etc/gitlab/ssl/
Activer le SSL dans GitLab
Maintenant que le certificat a été généré il faut ...