🌐

研究室のUbuntuサーバーで動いているGitLabをSSL化した

2022/06/06に公開約2,700字

はじめに

弊研究室ではオンプレサーバーを複数台所有しており、ネットワークを構築して様々な用途で使用しています。その中の一つにGitLabがあります。しかしSSL化されておらず危険 → SSL化しよう!ということです。

SSL化までの流れ

秘密鍵(key)ファイルの生成 → 証明書リクエスト(csr)ファイル作成 → 申請 → サーバー証明書(cer,crt)ファイル受け取り → 設定 → SSL化完了

秘密鍵ファイルの生成

事前準備としてパスフレーズと適当な200KB前後のファイルを3つ用意します。

openssl genrsa -des3 -rand randfile1.txt:randfile2.txt:randfile3.txt 2048 > servername.key
user@hostname:~$ openssl genrsa -des3 -rand randfile1.txt:randfile2.txt:randfile3.txt 2048 > servername.key
Generating RSA private key, 2048 bit long modulus (2 primes)
.................................................................................................................+++++
......................+++++
e is 65537 (0x010001)
Enter pass phrase:
Verifying - Enter pass phrase:

これでservername.keyという秘密鍵(key)ファイルが生成されました。

証明書リクエストファイル作成

組織名や所在地などの情報(DN)はそれぞれ認証局のルールに従って入力します。

openssl req -new -key servername.key -sha256 -out servername.csr
user@servername:~$ openssl req -new -key servername.key -sha256 -out servername.csr
Enter pass phrase for servername.key: #パスフレーズ入力
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
----- #以下からDNの入力
Country Name (2 letter code) [AU]:JP
State or Province Name (full name) [Some-State]:Tokyo
Locality Name (eg, city) []:
Organization Name (eg, company) [Internet Widgits Pty Ltd]:
Organizational Unit Name (eg, section) []:
Common Name (e.g. server FQDN or YOUR name) []:
Email Address []:

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:

これで秘密鍵ファイルにDNが付与された証明書リクエスト(csr)ファイルが作成されます。

申請

上で作成したcsrファイルを認証局に申請し、サーバー証明書と中間証明書(cer)を受け取ります。大学の場合は国立情報学研究所(セコムトラストシステムズ)が発行しているようです。

設定

サーバー証明書、中間証明書が発行されたら実際に設定に入ります。

  • 秘密鍵ファイル(key)
  • サーバー証明書、中間証明書(cer)

以上のファイルを/etc/gitlab/sslに置きます。
置いたら以下のGitLab設定ファイルを変更します。

/etc/gitlab/gitlab.rb

設定する内容は以下の通りです。

external_url 'https://servername.ac.jp' #GitLabを起動するマシンのFQDNまたはIPアドレス
nginx['redirect_http_to_https'] = true
nginx['ssl_certificate'] = "/etc/gitlab/ssl/servername.cer" #サーバ証明書ファイル名
nginx['ssl_certificate_key'] = "/etc/gitlab/ssl/servername.key" #秘密鍵ファイル名

設定したら変更を適用し、GitLabを再起動します。

sudo gitlab-ctl reconfigure
sudo gitlab-ctl restart

SSL化完了

GitLabにアクセスし、以下のようになっていれば設定完了です。

証明書もきちんと有効になっているようです。

Discussion

ログインするとコメントできます