初心者必見!GitLabでのSSL設定完全ガイド【ssl, gitlab】とは

目次

はじめに

目的

この文書は、GitLabでSSL(HTTPS)を安全に使うための手順をわかりやすく説明します。基本的な設定方針、証明書の準備、実際の設定手順までを順に扱います。初心者の方でも進められるように具体例を交えて解説します。

対象読者

  • 自社でGitLabを運用している管理者
  • 社内サーバーにHTTPSを導入したい開発者
  • 基本的なLinux操作(sudo、テキスト編集、ファイル転送)ができる方

前提条件

  • GitLabが既にインストール済みであること
  • 独自ドメイン(例: git.example.com)を使えること
  • サーバーに管理者権限でアクセスできること
    これらが揃っていれば、本書の手順をそのまま適用できます。

本書の構成

第2章でGitLab側のSSL設定方法を説明します。第3章で証明書の準備(CA発行、自己署名の違いなど)を示します。第4章で具体的なコマンドやファイル配置を順を追って解説します。まずは目的と前提を確認し、次章から設定を始めましょう。

GitLabでのSSL設定方法

概要

GitLabでHTTPSを有効にする基本は、/etc/gitlab/gitlab.rbのexternal_urlをhttpsで指定することです。これだけで多くの場合、内部のNginxがHTTPSを扱うようになります。

手順(基本)

  1. /etc/gitlab/gitlab.rbを開き、external_url ‘https://git.example.com’ のように設定します。
  2. 独自証明書を使う場合は /etc/gitlab/ssl/ にドメイン名.crtと.keyを置き、権限を600にします。例: /etc/gitlab/ssl/git.example.com.crt
  3. HTTPを自動でHTTPSにリダイレクトしたい場合は nginx[‘redirect_http_to_https’] = true を有効にします。
  4. 設定を反映するために sudo gitlab-ctl reconfigure を実行します。

注意点

  • ファイアウォールでTCP 443を開けてください。ブラウザやcurlで接続確認します。
  • Let’s Encryptを利用する場合はletsencypt設定を有効にできます(omnibusの設定を参照)。

外部プロキシを使う場合

リバースプロキシでSSL終端するなら、GitLab側はhttpのままにすることが多いです。その場合はexternal_urlをhttpで残し、プロキシ側で証明書を管理してください。

証明書の準備

以下では、GitLabで使うSSL証明書を準備する手順を分かりやすく説明します。

選択肢の確認

  • Let’s Encrypt: GitLab(Omnibus)は自動で証明書を取得・更新できます。手間を減らしたい場合はこちらが便利です。設定は /etc/gitlab/gitlab.rb で有効化します(external_url を https に設定し、letsencrypt[‘enable’] = true など)。

  • カスタム証明書: 企業や既存の証明書を使う場合に選びます。CAから発行された .crt と秘密鍵 .key を用意します。

カスタム証明書を使う手順(簡潔)

  1. 必要ファイルを用意する
  2. 証明書ファイル(例: gitlab.example.com.crt)
  3. 秘密鍵ファイル(例: gitlab.example.com.key)
  4. 中間証明書が別途ある場合は結合して fullchain を作ると確実です。

  5. ファイル名と場所

  6. /etc/gitlab/ssl/ に配置します。
  7. ファイル名はホスト名に合わせると設定が分かりやすいです。

  8. 所有者とパーミッション設定

  9. ディレクトリ: sudo mkdir -p /etc/gitlab/ssl && sudo chown root:root /etc/gitlab/ssl
  10. 証明書: sudo cp your.crt /etc/gitlab/ssl/gitlab.example.com.crt && sudo chmod 644 /etc/gitlab/ssl/*.crt
  11. 秘密鍵: sudo cp your.key /etc/gitlab/ssl/gitlab.example.com.key && sudo chmod 600 /etc/gitlab/ssl/*.key
  12. 所有者は root:root にします。

  13. GitLabに反映

  14. ファイル配置後、sudo gitlab-ctl reconfigure を実行します。
  15. 必要なら sudo gitlab-ctl restart nginx で反映を確認します。

よくあるトラブル

  • 権限が厳しすぎる/緩すぎると読み込めません。
  • ファイル名がドメインと合っていないと無効になります。
  • 中間証明書を含め忘れるとブラウザで未設定表示になります。

証明書はセキュリティの要です。配置と権限を丁寧に確認してください。

設定手順

前提

  • GitLab(Omnibus)を使っていること、root権限があること。
  • 証明書(公開鍵・秘密鍵)を用意していること。証明書はホスト名と拡張子のみのファイル名にします(例: example.com.crt, example.com.key)。

手順

  1. external_urlをHTTPSで指定する
  2. /etc/gitlab/gitlab.rb を編集し、external_urlを https://<ホスト名> に設定します。例: external_url "https://example.com"

  3. 証明書を配置する

  4. ディレクトリを作成します: sudo mkdir -p /etc/gitlab/ssl
  5. 証明書ファイルを配置します(ファイル名はホスト名のみ): /etc/gitlab/ssl/example.com.crt/etc/gitlab/ssl/example.com.key
  6. パーミッションを設定します: sudo chmod 600 /etc/gitlab/ssl/example.com.*sudo chown root:root /etc/gitlab/ssl/example.com.*
  7. 注意: 証明書ファイルはフルチェーン(中間証明書を含む)を使い、秘密鍵はパスフレーズなしを推奨します。

  8. 設定反映

  9. sudo gitlab-ctl reconfigure を実行します。組み込みのNginxが自動でHTTPS用の設定を作成します。

  10. 動作確認

  11. ブラウザで https://<ホスト名> を開くか、curl -Ik https://example.com で証明書が正しく読み込まれているか確認します。

注意点

  • AWSのデフォルトパブリックDNS名ではLet’s Encryptは証明書を発行できないため、独自ドメインが必要です。
  • 設定変更後に問題が出たら sudo gitlab-ctl tail でログを確認してください。
よかったらシェアしてね!
  • URLをコピーしました!

この記事を書いた人

目次