VirtualBox上に構築したUbuntu20.04LTS(Desktop)にGitlabをインストールして自己署名証明書によりHTTPSアクセスする方法
「前回」、SambaをインストールしたUbuntu20.04LTS(Desktop)に、Gitlabをインストールしてみました。
GitLabをUbuntuにインストール
公式サイトの解説に従ってインストールします。
公式サイトの説明では、GitLab Enterprise Editionをインストールすることをお勧めしています。説明を見たら、お金を払わずにEnterprise Editionを使った場合でも、Community Editionを使った場合と同等であることの説明がありました。
なので、推奨の通り、Enterprise Editionをインストールします。
依存パッケージのインストール
以下のコマンドを入力して、依存パッケージをインストールします。
$ sudo apt update
$ sudo apt-get install -y curl openssh-server ca-certificates
次に、メールの通知を送信するために、Postfixをインストールします。
$ sudo apt-get install -y postfix
Postfixのインストール中に設定画面が表示されます。
もしもその時は、'Internet Site'を選択してEnterを押し、
"mail name"には、サーバーの外部DNS名を入力してEnterを押してください。もしも追加の画面が表示される場合は、デフォルト値のまま、Enterを押してください。
GitLabパッケージのリポジトリへの追加とインストール
GitLabパッケージをリポジトリに追加するため、以下のコマンドを入力します。
$ curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ee/script.deb.sh | sudo bash
次に、GitLabパッケージをインストールします。自己署名証明書(いわゆるオレオレ証明書)を使う場合、後で設定しますので、ここではhttpプロトコルでサーバーを指定します。
自分の場合、次のようになりました。
$ sudo EXTERNAL_URL="http://ubuntu-srv" apt-get install gitlab-ee
自己証明証明書を作成する
以下の記事を参考にして、自己署名証明書を作成してみます。
$ mkdir ssl
$ cd ssl
$ vi subjectnames.txt
subjectAltName = DNS:gitlab.example.jp, IP:192.168.56.2
$ openssl genrsa 2048 > server.key
$ openssl req -new -key server.key -subj "/CN=gitlab.example.jp" > server.csr
$ openssl x509 -days 3650 -req -extfile subjectnames.txt -signkey server.key < server.csr > server.crt
$ openssl x509 -in server.crt -text -noout
ここで使用している、example.jp というドメイン名は、自由に使ってよいドメイン名になります。
その解説については、以下の記事に書かれていました。
作成した証明書をgitlabに組み込んでみます。
以下の記事を参考にしました。
sudo mkdir /etc/gitlab/ssl/
sudo chmod 700 /etc/gitlab/ssl
sudo cp ./server.crt /etc/gitlab/ssl/gitlab.example.jp.crt
sudo cp ./server.key /etc/gitlab/ssl/gitlab.example.jp.key
sudo chmod 404 /etc/gitlab/ssl/gitlab.example.jp.crt
sudo chmod 400 /etc/gitlab/ssl/gitlab.example.jp.key
sudo vi /etc/gitlab/gitlab.rb
external_url 'https://gitlab.example.jp'
# 1338行目あたり
NGINXのセクション内のコメントアウトを解除します。
################################################################################
## GitLab Web server
## ! Docs: https://docs.gitlab.com/omnibus/settings/nginx.html#using-a-non-bundled-web-server
################################################################################
# nginx['ssl_certificate'] = "/etc/gitlab/ssl/#{node['fqdn']}.crt"
# nginx['ssl_certificate_key'] = "/etc/gitlab/ssl/#{node['fqdn']}.key"
↓
nginx['ssl_certificate'] = "/etc/gitlab/ssl/gitlab.example.jp.crt"
nginx['ssl_certificate_key'] = "/etc/gitlab/ssl/gitlab.example.jp.key"
設定を有効にする
以下のコマンドを投入し、再設定します。
$ sudo gitlab-ctl reconfigure
$ sudo gitlab-ctl restart
hostsファイルを修正する
WindowsPCのhostsファイルを修正します。
hostsファイルは、C:\Windows\System32\drivers\etc に保存されています。
ホストファイルは、書き込み保護がされているので、ファイルのプロパティ-セキュリティタブから編集ボタンをクリックします。
Usersを選択し、アクセス許可からフルコントロールにチェックを入れ、OKボタンをクリックします。警告のダイアログが出ますが、受け入れてください。
ファイルを開いて、以下の内容を追加します。
設定値については、適宜自分のサーバー設定に合わせて変更してください。
192.168.56.2 gitlab.example.jp
編集が完了したら、アクセス許可の設定を元に戻してください。
フルコントロール、変更、書き込みのチェックを外して、OKボタンを押すと元に戻ります。
ブラウザに自己署名証明書を取り込む
以下のURLにアクセスします。アクセスすると赤くなると思います。
保護されていない通信の部分をクリックして、警告を参照します。
証明書(無効)となっている部分をクリックして、証明書を確認します。
証明書のエクスポートウィザードが始まるので、すべてデフォルトを受け入れて、証明書ファイルを保存してください。
証明書ファイルが保存できたら、保存した証明書ファイルをダブルクリックして、証明書ファイルを信頼されたルート証明機関に登録します。
この辺の詳しいやり方については、この解説記事に詳しく書かれています。
解説記事のとおりではあるのですが、実際にやってみて記事にしないといけないなと思い、やってみます。
証明書をダブルクリックすると以下のようなエラーっぽい証明書が表示されます。自己署名証明書なので、この証明書を信頼されたルート証明書機関ストアにインストールしてください。という指示が表示されています。
証明書のインストールのボタンをクリックし、インポートウィザードを起動します。
保存場所は、現在のユーザーで構いません。次へボタンをクリックします。
証明書をすべて次のストアに配置するを選択し、参照ボタンをクリックします。
証明書のストアは、信頼されたルート証明機関を選択し、OKボタンをクリックします。
完了ボタンをクリックします。
セキュリティ警告のポップアップが表示されるので、はいを選択し、受け入れます。
正しくインポートされましたと表示されたら、終了です。
確認
すべてのChromeウィンドウを閉じて、サイトにアクセスしてみます。
おわりに
とりあえず、以上で記事は終了になります。