web-dev-qa-db-fra.com

Comment utiliser encrypt avec gitlab?

J'ai commencé à chercher des certificats SSL quand je suis tombé sur chiffrons , et je voulais l'utiliser avec gitlab, étant toutefois qu'il fonctionne sur un Raspberry Pi 2 et qu'il fonctionne parfaitement maintenant (donc Je ne veux rien gâcher), est-ce que j'irais installer un certificat ssl permet de crypter correctement? PS: Mon installation est omnibus

34
chabad360

Il existe 2 façons selon la configuration de votre infrastructure (Raspi, gros serveur Cloud ou quelque chose entre les deux):

  1. Si vous avez un serveur accessible en externe (signifie que votre hôte Gitlab peut être appelé à partir des serveurs Let´s Encrypt, ce qui est nécessaire pour Let´s Encrypt´s mécanisme automatique de vérification que vous "possédez" un certain domaine comme gitlab.yoursite.com et le serveur/hôte correspondant et résolu DNS) la seule chose nécessaire (à partir de Gitlab version 10.7) est d'ajouter un s vers le http dans votre configuration d'URL Gitlab dans /etc/gitlab/gitlab.rb (comme marcolz déjà mentionné):

    external_url 'https://gitlab.yoursite.com'

À partir des documents dans https://docs.gitlab.com/omnibus/settings/ssl.html#let-39-s-encrypt-integration :

Omnibus-gitlab peut récupérer et renouveler automatiquement les certificats de Let's Encrypt pour vous.

  1. Si votre hôte Gitlab n'est pas accessible de l'extérieur par les serveurs Let´s Encrypt , l'ensemble du processus est beaucoup plus difficile! Vous quitterez alors la manière automatique de Nice de laisser Gitlab Omnibus faire le gros du travail pour vous. Vous devez absolument récupérer les certificats Let´s Encrypt par vous-même maintenant Il existe plusieurs façons de récupérer les certificats Let´s Encrypt sans avoir besoin d'un serveur accessible en externe.

    Celui que je choisis et que je recommanderais est d'utiliser le client alternatif Let´s Encrypt déshydraté avec dns-Lexicon pour automatiser entièrement le processus d'obtention des certificats avec le Encryptons dns-challenge, qui a été introduit quelque part en 2016. C'est le seul moyen où vous n'avez pas besoin d'un serveur accessible de l'extérieur - mais vous devez à nouveau "posséder" un certain domaine comme gitlab.yoursite.com [~ # ~] et [~ # ~] vous avez besoin d'un accès API au fournisseur DNS, qui héberge votre domaine (voici - liste des fournisseurs DNS pris en charge dans ce cas ).

    Comme l'ensemble du processus est assez complexe, j'ai créé un playbook Ansible entièrement compréhensible prepare-gitlab.yml où chaque étape de l'installation de Gitlab avec Omnibus est gérée pour vous (sources GitHub complètes sont disponibles ici: https://github.com/jonashackt/gitlab-ci-stack ).

    Si vous ne voulez créer que les certificats Let´s Encrypt, jetez un œil à get-letsencrypt-certs-dehydrated-Lexicon.yml - même si vous ne voulez pas utiliser Ansible, vous pouvez aussi reproduisez manuellement chaque étape de la console ou utilisez un autre outil d'automatisation comme Chef ou Saltstack (bien que je ne puisse pas le recommander personnellement). Une autre façon serait de jeter un coup d'œil sur cet excellent article de blog des gars de Lexicon: https://blog.thesparktree.com/generating-intranet-and-private-network-ssl , à partir des étapes décrites J'ai essentiellement développé le playbook à partir de.

    Dans les deux cas, n'oubliez pas de copier les certificats Let´s Encrypt récupérés manuellement (ou automatiquement)

    /srv/dehydrated/certs/{{ gitlab_domain }}/fullchain.pem

    à

    /etc/gitlab/ssl/{{ gitlab_domain }}.crt

    et

    /srv/dehydrated/certs/{{ gitlab_domain }}/privkey.pem

    à

    /etc/gitlab/ssl/{{ gitlab_domain }}.key

    Gitlab les récupérera automatiquement pour vous, comme l'indique la documentation dans la façon de configurer manuellement HTTPS

7
jonashackt

La meilleure solution que j'ai pu trouver pour l'instant est décrite dans ce billet de blog . Je ne vais pas tout réciter, mais les points clés sont:

  • Utilisez l'authentificateur webroot pour Let's Encrypt
  • Créez le dossier /var/www/letsencrypt et utilisez ce répertoire comme webroot-path pour Let's Encrypt
  • Modifiez les valeurs de configuration suivantes dans /etc/gitlab/gitlab.rb et courir gitlab-ctl reconfigure après ça:

    nginx['redirect_http_to_https'] = true
    nginx['ssl_certificate']= "/etc/letsencrypt/live/gitlab.yourdomain.com/fullchain.pem"
    nginx['ssl_certificate_key'] = "/etc/letsencrypt/live/gitlab.yourdomain.com/privkey.pem"
    nginx['custom_gitlab_server_config']="location ^~ /.well-known {\n alias /var/www/letsencrypt/.well-known;\n}\n"
    
  • Si vous utilisez Mattermost fourni avec le package Omnibus, vous pouvez en outre définir ces options dans /etc/gitlab/gitlab.rb:

    mattermost_nginx['redirect_http_to_https'] = true
    mattermost_nginx['ssl_certificate']= "/etc/letsencrypt/live/gitlab.yourdomain.com/fullchain.pem"
    mattermost_nginx['ssl_certificate_key'] = "/etc/letsencrypt/live/gitlab.yourdomain.com/privkey.pem"
    mattermost_nginx['custom_gitlab_mattermost_server_config']="location ^~ /.well-known {\n alias /var/www/letsencrypt/.well-known;\n}\n"
    
  • Après avoir demandé votre premier certificat, n'oubliez pas de modifier le external_url à https://... et exécutez à nouveau gitlab-ctl reconfigure

Cette méthode est très élégante car elle monte simplement le répertoire /var/www/letsencrypt/.well-known utilisé par l'authentificateur Let's Encrypt dans la racine Web Gitlab via une configuration Nginx personnalisée et l'authentification est toujours possible lorsque Gitlab est en cours d'exécution. Cela signifie que vous pouvez renouveler automatiquement les certificats Let's Encrypt.

62
rkallensee

Je n'ai aucune idée si l'installation diffère sur un Raspberry Pi. Le processus d'installation de Let's Encrypt fait de la magie dont je ne sais rien.

Préparez Gitlab

Tapez grep 'external_url' /etc/gitlab/gitlab.rb pour vérifier le nom du site Web. À titre d'exemple https: // gitlab.example.com : 50000

Si votre URL externe ne commence pas par https, modifiez-la pour commencer par https

La partie en gras sera votre <your domain name>

Générez les certificats

Suivez les instructions d'installation de Let's Encrypt sur ce lien: https://letsencrypt.org/howitworks/

Je ne copie pas les instructions car elles peuvent changer (car le programme est actuellement en version bêta ouverte). Ce que vous devez exécuter dépend de si vous avez également des sites Web exécutés sur Apache pour lesquels vous souhaitez générer des certificats Let's Encrypt.

Une fois que vous avez généré vos certificats Let's Encrypt, ils se trouvent dans /etc/letsencrypt/live/<your domain name>/

Copiez les certificats

Gitlab attend deux fichiers situés dans /etc/gitlab/ssl/

Il y a quelque chose dont je ne suis pas sûr, vous devrez peut-être convertir les certificats .pem en utilisant la réponse à cet emplacement: Convertir .pem en .crt et .key

Copiez le certificat de /etc/letsencrypt/live/<your domain name>/cert.pem à /etc/gitlab/ssl/<your domain name>.crt

Copiez la clé privée de /etc/letsencrypt/live/<your domain name>/privkey.pem à /etc/gitlab/ssl/<your domain name>.key

Reconfigurer

Courir gitlab-ctl reconfigure

8
Hay

Au cas où cela serait utile à quelqu'un d'autre, j'ai écrit le processus que j'ai utilisé ici: http://kelan.io/2016/using-lets-encrypt-to-add-ssl-to-gitlab/

J'avais configuré GitLab précédemment (via l'installation à partir de la source), et j'essayais simplement d'ajouter SSL, en utilisant Let's Encrypt.

Les points clés sont:

  • Utilisez le mode standalone de letsencrypt
  • Faites une copie des certificats lisible par gitlab-Shell
1
Kelan

Vous devez installer manuellement les certificats générés dans /etc/gitlab/ssl et définissez l'url externe sur https dans /etc/gitlab/gitlab.rb comme décrit dans: https://gitlab.com/gitlab-org/omnibus-gitlab/blob/master/doc/settings/nginx.md

1
marcolz

Vous devez installer les certificats générés manuellement dans/etc/gitlab/ssl et définir l'url externe sur https dans /etc/gitlab/gitlab.rb comme décrit dans: https://gitlab.com/gitlab-org /omnibus-gitlab/blob/master/doc/settings/nginx.md

Je préfère utiliser des liens symboliques, vous n'avez donc pas besoin de copier les certificats. entrez la description du lien ici

0
Eskaaa