1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

GitLab に Let's Encrypt で SSL を設定

Last updated at Posted at 2023-09-27

はじめに

前回、AmazonLinux2023 に GitLab をインストール
で GitLab のインストールを行いました。
今回はその続きで、SSLの導入を行いたいと思います。

事前作業

初期状態をいつでも確認できるようにバックアップを取っておきましょう。

バックアップ
$ sudo cp -pi /etc/gitlab/gitlab.rb /etc/gitlab/gitlab.rb_org

Let's Encrypt の導入

導入自体は簡単に行えます。
先ほどバックアップを取った /etc/gitlab/gitlab.rb に記載されている、 external_urlhttps:// にするだけです。
ただし、注意が必要なのが AmazonLinux2023 に GitLab をインストール では、AWS発行のパブリックDNSを利用していますが、このドメインだとSSLの発行はできません。

実際に試してみたところ以下のようなエラーが出力されました。

パブリック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 します。

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!

無事に更新ができました。

確認

URLの部分に鍵マークが表示されていれば完了です。
スクリーンショット 2023-09-27 11.02.07.png

自動更新設定

次は自動更新です。
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 します。

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_urlhttps にすると Let's Encrypt で発行される。
  • Let's Encrypt で発行した場合、デフォルトで自動更新される。

がポイントかなと思います。

その他の GitLab に関する投稿

GitLab に関する記事は他にも投稿しているのでよければ読んでもらえたら嬉しいです。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?