MetaPii 技術室

あなたの知恵と思いを検索するフラッシュメモアプリMetaPiiのエンジニアブログです。

自宅・社内の gitlabで最速SSL(HTTPS)対応 by docker

概要

gitlabのguiって便利ですよね、ユーザー作成したりレポジトリ作成したり。
でもデフォルトだとhttpなのでパケット見るとログインパスワードとかバレバレ。
怖い!
で、さくっと(1分以内に)SSL(TLS)対応したいけど、どうするの?ってところが本記事のミソです。

ポイントとして、証明書は作りません。 だって自分で立てたものに対して証明なんていらない、ただほしいのは通信の暗号化。
証明書なしで最速で通信暗号化の対応を紹介します。

1. デフォルトのdocker-compose.yml 確認

以下のような感じだと思います。

version: '3'
services:
  gitLab:
    image: gitlab/gitlab-ce:latest
    restart: always
    hostname: '192.168.0.200'
    environment:
      GITLAB_OMNIBUS_CONFIG: |
        external_url 'http://192.168.0.200:6500'
        gitlab_rails['gitlab_shell_ssh_port'] = 6522
    ports:
     - "6500:6500"
     - "6522:22"
     - "65443:443"
    volumes:
     - 'gitlab-config:/etc/gitlab'
     - 'gitlab-logs:/var/log/gitlab'
     - 'gitlab-data:/var/opt/gitlab'
volumes:
  gitlab-data:
  gitlab-logs:
  gitlab-config:

2. 修正

では、修正していきます。
* 修正前箇所

      GITLAB_OMNIBUS_CONFIG: |
        external_url 'http://192.168.0.200:6500'
  • 修正後箇所
      GITLAB_OMNIBUS_CONFIG: |
        external_url 'https://192.168.0.200:6500'

ふぅ。疲れた。

これだけです。httpのとこに[s]つけただけ。

3. 再起動そして対応終了

あとは起動

docker-compose up -d

4.通信の暗号化確認

パケットをキャプチャして確認します。
* 修正前
当然httpなのでサインインで入力したユーザー名とかパスワードがもろに見れます。画像ではパスワードの箇所はカットしてキャプチャしてます。

f:id:continue1:20191130142632p:plain
パケットキャプチャ修正前
* 修正後 Application Dataとして暗号化されURLさえ不明に。TLS v1.2みたいですね。
f:id:continue1:20191130143212p:plain
キャプチャ修正後

余談

証明書とか考慮してないのでGoogle Chromeには真っ赤になって怒られます。 でも、関係ないよね。要件は満たした。