[GitLab]Dockerイメージ更新でLet’s Encrypt関連のエラー


Dockerのイメージを更新したら、GitLabがまた再起動を繰り返すようになった。

GitLabはHTTPS通信させるような環境下では、勝手に自動的にLet’s Encryptを利用して証明書を作るのだけど、そこが悪さをしていた模様。

[2023-08-06T00:04:21+00:00] FATAL: Acme::Client::Error::RejectedIdentifier: letsencrypt_certificate[(GitLab Server IP)] (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 "(GitLab Server IP)": The ACME server can not issue a certificate for an IP address

この記事の前提条件として、
管理人の環境では自己署名したIPベースのSSLを使用してHTTPS通信するような運用をしている。
自己署名か公式なCA署名かに関わらず、署名済みのSSLを/etc/gitlab/sslに置いておけばよかったはず。

何かLet’s Encryptの設定が初期化されたのか判定が変わったのかは知らないが、
証明書が配置されていてもLet’s Encryptに作成しに行く残念な仕様になっている模様。
この仕様なら、パブリックでも起こるかな?

Let’s Encrypt利用は無効化できるので、そのための作業を行う。
コンテナを起動した後、素早くコンテナに入り、再起動される前にGitLabを停止しておく。

gitlab-ctl stop

letsencrypt_account_private_key.pemは使わないので消しておく。

rm /etc/gitlab/ssl/letsencrypt_account_private_key.pem

あとは/etc/gitlab/gitlab.rbを編集してLet’s Encryptを使わないようにする。

letsencrypt['enable'] = false

設定ファイルを変えたので、おまじない。
composeなどの場合はdown & upだけで良い。

gitlab-ctl reconfigure
gitlab-ctl start

How to restart GitLab | GitLab

Maintenance commands | GitLab

,