はじめに
前回、AmazonLinux2023 に GitLab をインストール
で GitLab のインストールを行いました。
今回はその続きで、SSLの導入を行いたいと思います。
事前作業
初期状態をいつでも確認できるようにバックアップを取っておきましょう。
$ sudo cp -pi /etc/gitlab/gitlab.rb /etc/gitlab/gitlab.rb_org
Let's Encrypt の導入
導入自体は簡単に行えます。
先ほどバックアップを取った /etc/gitlab/gitlab.rb
に記載されている、 external_url
を https://
にするだけです。
ただし、注意が必要なのが AmazonLinux2023 に GitLab をインストール では、AWS発行のパブリックDNSを利用していますが、このドメインだとSSLの発行はできません。
実際に試してみたところ以下のようなエラーが出力されました。
There was an error running gitlab-ctl reconfigure:
letsencrypt_certificate[ec2-xxx-xxx-xxx-xxx.ap-northeast-1.compute.amazonaws.com] (letsencrypt::http_authorization line 6) had an error: Acme::Client::Error::RejectedIdentifier: acme_certificate[staging] (letsencrypt::http_authorization line 43) had an error: Acme::Client::Error::RejectedIdentifier: Error creating new order :: Cannot issue for "ec2-xxx-xxx-xxx-xxx.ap-northeast-1.compute.amazonaws.com": The ACME server refuses to issue a certificate for this domain name, because it is forbidden by policy
Let's Encrypt のポリシーとして、すぐに変更される可能性があるドメインは禁じられているそうです。
By policy, Let’s Encrypt does not allow people to get certificates for generic EC2 hostnames. Mostly because they can change hands far more quickly than certificates expire.
You need to use your own domain name of some sort.
(You can certainly use AWS, EC2, and EC2 IP addresses. You just can’t use the EC2 hostname.)
ー URL:https://community.letsencrypt.org/t/urnparamserror-rejectedidentifier/110334/2
ということで、独自ドメインを使って行いたいと思います。
今回は sample.hengjiu.jp
というドメインを利用して設定していきたいと思います。
$ sudo diff -y --suppress-common-lines /etc/gitlab/gitlab.rb /etc/gitlab/gitlab.rb_org
external_url 'https://sample.hengjiu.jp' | external_url 'http://ec2-xxx-xxx-xxx-xxx.ap-northeast-1.compute.
修正したら、 gitlab-ctl reconfigure
します。
$ sudo gitlab-ctl reconfigure
[2023-09-27T01:49:56+00:00] INFO: Started Cinc Zero at chefzero://localhost:1 with repository at /opt/gitlab/embedded (One version per cookbook)
Cinc Client, version 17.10.0
Patents: https://www.chef.io/patents
Infra Phase starting
~~~
Running handlers:
[2023-09-27T01:52:15+00:00] INFO: Running report handlers
Running handlers complete
[2023-09-27T01:52:15+00:00] INFO: Report handlers complete
Infra Phase complete, 38/951 resources updated in 02 minutes 19 seconds
gitlab Reconfigured!
無事に更新ができました。
確認
自動更新設定
次は自動更新です。
Let' Encrypt なので有効期限が90日になるため、定期的にチェックして期限が切れる前に更新する必要があります。
ですが、実はデフォルトの設定で 4日目の午前0時以降に更新がスケジュール
されているというのがドキュメントに記載ありました。
そのため、今回は自動更新タイミングの変更を行います。
以下が変更前と変更後の内容です。
変更前:4日目の午前0時
変更後:7日目の午後9時30分
ということで以下が修正後の差分です。
$ sudo diff -y --suppress-common-lines /etc/gitlab/gitlab.rb /etc/gitlab/gitlab.rb_org
external_url 'https://sample.hengjiu.jp' | external_url 'http://ec2-xxx-xxx-xxx-xxx.ap-northeast-1.compute.
letsencrypt['auto_renew'] = true | # letsencrypt['auto_renew'] = true
letsencrypt['auto_renew_hour'] = 21 | # letsencrypt['auto_renew_hour'] = 0
letsencrypt['auto_renew_minute'] = 30 # Should be a number o | # letsencrypt['auto_renew_minute'] = nil # Should be a number
letsencrypt['auto_renew_day_of_month'] = "*/7" | # letsencrypt['auto_renew_day_of_month'] = "*/4"
それでは修正したら、改めて gitlab-ctl reconfigure
します。
$ sudo gitlab-ctl reconfigure
[2023-09-27T06:21:32+00:00] INFO: Started Cinc Zero at chefzero://localhost:1 with repository at /opt/gitlab/embedded (One version per cookbook)
Cinc Client, version 17.10.0
Patents: https://www.chef.io/patents
Infra Phase starting
~~~
Running handlers:
[2023-09-27T06:23:38+00:00] INFO: Running report handlers
Running handlers complete
[2023-09-27T06:23:38+00:00] INFO: Report handlers complete
Infra Phase complete, 8/924 resources updated in 02 minutes 06 seconds
gitlab Reconfigured!
以上で完了です。
おわりに
今回も /etc/gitlab/gitlab.rb
で設定できる簡単な内容でしたが、
- EC2にデフォルトで発行されるパブリックDNSは使えない。
- SSLは
external_url
でhttps
にするとLet's Encrypt
で発行される。 -
Let's Encrypt
で発行した場合、デフォルトで自動更新される。
がポイントかなと思います。
その他の GitLab に関する投稿
GitLab に関する記事は他にも投稿しているのでよければ読んでもらえたら嬉しいです。