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