web-dev-qa-db-ja.com

gitlabで暗号化を使用するにはどうすればよいですか?

暗号化しよう に遭遇したときにSSL証明書を調べ始め、gitlabでそれを使用したいと考えましたが、Raspberry Pi 2で実行されており、現在完全に実行されているため(私は何も台無しにしたくない)、彼はSSL証明書を正しく暗号化することができますか? PS:私のインストールはオムニバスです

34
chabad360

インフラストラクチャのセットアップに応じて2つの方法があります(Raspi、ビッグクラウドサーバー、またはその中間)。

  1. externally access Serverがある場合(GitlabホストはLet's Encryptの自動検証メカニズムに必要なLet's Encryptサーバーから呼び出すことができることを意味しますgitlab.yoursite.comおよび対応するDNS解決済みサーバー/ホストなどの特定のドメインを「所有」していること必要な唯一のもの(Gitlabバージョン10.7以降)はsをGitlab URL構成の/etc/gitlab/gitlab.rbhttpに追加するには(as- marcolz 既に述べた):

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

https://docs.gitlab.com/omnibus/settings/ssl.html#let-39-s-encrypt-integration のドキュメントから:

Omnibus-gitlabは、Let's Encryptから証明書を自動的に取得して更新できます。

  1. GitlabホストがLet's Encryptサーバーから外部からアクセスできない場合、プロセス全体がはるかに困難になります。その後、Gitlab Omnibusが自動的に面倒な作業を行うニースの自動方法を終了します。Let's Encrypt証明書を今すぐ自分で取得する必要があります!外部からアクセス可能なサーバーを使用せずにLet's Encrypt証明書を取得する方法がいくつかあります。

    私が選択し、推奨するのは、代替のLet's Encryptクライアント dehydrateddns-Lexicon と一緒に使用して、証明書の取得プロセスを完全に自動化することです。 dns-challengeを暗号化しましょう。これは2016年に導入されました。これが唯一の方法で、外部からアクセス可能なサーバーを必要としません-ここでも、gitlab.yoursite.com[〜#〜] and [〜#〜]のような特定のドメインを「所有」する必要があります。DNSプロバイダーへのAPIアクセスが必要です。ドメインをホストします(ここでは その場合にサポートされるDNSプロバイダーのリスト )。

    プロセス全体が非常に複雑なので、完全に理解できる Ansible playbook prepare-gitlab.yml を作成しました。Omnibusを使用したGitlabインストールのすべてのステップが処理されます(完全なGitHubソース https://github.com/jonashackt/gitlab-ci-stack )から入手できます。

    Let´s Encrypt証明書のみを作成する場合は、Ansibleを使用したくない場合でも obtain-letsencrypt-certs-dehydrated-Lexicon.yml をご覧ください。コンソール上のすべてのステップを手動で再現するか、ChefやSaltstackなどの別の自動化ツールを使用します(個人的にはお勧めできません)。別の方法は、Lexiconの連中からこの素晴らしいブログ投稿を見ることです。 https://blog.thesparktree.com/generated-intranet-and-private-network-ssl 、説明されている手順から私は基本的にプレイブックを開発しました。

    どちらの方法を選択しても、手動で(または自動的に)フェッチされたLet's Encrypt証明書をコピーすることを忘れないでください

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

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

    そして

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

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

    HTTPSを手動で構成する方法

7
jonashackt

私が今のところ見つけることができた圧倒的に最良の解決策は このブログ投稿 で説明されています。すべてを説明するわけではありませんが、重要な点は次のとおりです。

  • Let's Encryptにwebrootオーセンティケーターを使用します
  • /var/www/letsencryptフォルダーを作成し、Let's Encryptのwebroot-pathとしてこのディレクトリを使用します
  • /etc/gitlab/gitlab.rbの以下の構成値を変更し、その後gitlab-ctl reconfigureを実行します。

    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"
    
  • Omnibusパッケージに同梱されているMattermostを使用している場合は、/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"
    
  • 最初の証明書を要求した後、external_urlhttps://...に変更し、gitlab-ctl reconfigureを再度実行することを忘れないでください

この方法は、Let's Encrypt認証システムが使用するディレクトリ/var/www/letsencrypt/.well-knownをカスタムNginx構成を介してGitlab Webルートにマウントするだけで、Gitlabの実行中は常に認証が可能なため、非常にエレガントです。これは、Let's Encrypt証明書を自動的に更新できることを意味します。

62
rkallensee

Raspberry Piでインストールが異なるかどうかはわかりません。 Let's Encryptインストールプロセスは、私が何も知らない魔法を実行します。

Gitlabを準備する

grep 'external_url' /etc/gitlab/gitlab.rbと入力して、Webサイト名を確認します。例としてhttps://gitlab.example.com:50000

外部URLがhttpsで始まっていない場合は、httpsで始まるように変更します

太字の部分は<your domain name>になります

証明書を生成する

このリンクのLet's Encryptインストール手順に従ってください: https://letsencrypt.org/howitworks/

指示は変更される可能性があるため、この手順はコピーしていません(プログラムは現在オープンベータ版であるため)。実行する必要があるものは、Let's Encrypt証明書を生成するApacheで実行されているWebサイトがあるかどうかによって異なります。

Let's Encrypt証明書を生成すると、/etc/letsencrypt/live/<your domain name>/に配置されます

証明書をコピーする

Gitlabは/etc/gitlab/ssl/にある2つのファイルを期待しています

不明な点があります。次の場所で回答を使用して.pem証明書を変換する必要があります。 。pemを.crtおよび.keyに変換

証明書を/etc/letsencrypt/live/<your domain name>/cert.pemから/etc/gitlab/ssl/<your domain name>.crtにコピーします

秘密キーを/etc/letsencrypt/live/<your domain name>/privkey.pemから/etc/gitlab/ssl/<your domain name>.keyにコピーします

再構成

gitlab-ctl reconfigureを実行します

8
Hay

他の人に役立つ場合は、ここで使用したプロセスを書きました: http://kelan.io/2016/using-lets-encrypt-to-add-ssl-to-gitlab/

以前(ソースからのインストールを介して)GitLabをセットアップし、Let's Encryptを使用してSSLを追加しようとしていました。

キーポイントは次のとおりです。

  • standaloneletsencryptモードを使用します
  • gitlab-Shellで読み取り可能な証明書のコピーを作成します
1
Kelan

生成された証明書を/etc/gitlab/sslに手動でインストールし、外部URLを/etc/gitlab/gitlab.rbのhttpsに設定する必要があります。説明は https://gitlab.com/gitlab-org/omnibus-gitlab /blob/master/doc/settings/nginx.md

1
marcolz

生成された証明書を/ etc/gitlab/sslに手動でインストールし、 https:// gitlabの説明に従って/etc/gitlab/gitlab.rbで外部URLをhttpsに設定する必要があります。 com/gitlab-org/omnibus-gitlab/blob/master/doc/settings/nginx.md

シンボリックリンクを使用したいので、証明書をコピーする必要はありません。 リンクの説明をここに入力してください

0
Eskaaa