Let’s Encrypt のルート証明書が 10 月 1 日に変更になる(大本が失効する) 騒ぎに何故か巻き込まれたのですが、極稀に見る古い環境、あると思います。例えば昔ながらの CentOS 6 を使っている環境(昔の VPS ブームとかですかね…)とかが代表的な一例かと思います。

式年遷宮をしないといけないとわかっていても運用してしまっている例もあると思いますが、移転するまでの時間稼ぎを含めて対応する例が多いかと思うので、メモ程度に記載します。

この記事で紹介する手順(まとめ)

  1. 公式レポジトリを mirror から vault に変更し、アップデート
  2. Python 3.6 系のパッケージをインストール
  3. certbot の更新などを実施

環境情報

  • CentOS 6.10 Final
  • remi, nginx, CentOS-SCLo レポジトリを追加済み
  • certbot-auto 構築済み

公式レポジトリの情報を mirror から vault に変更する

CentOS 6 はサポートが切れているため、アップデートをするべきなのですが、これに伴って、広域的に配信されているサーバから古いバージョンの CentOS のパッケージ情報がアーカイブとして保存されているサーバに変更します。

正規表現で変更することもできそうですが、無難に vim で CentOS* から始まるファイルを開いて mirror.centos.org から vault.centos.org に変更して保存します。

yum update を実行して、エラーが出なくなるまでひたすら変更します。

Python 3.6 のインストール

certbot をインストールしていますが、新しい certbot では、 Python 3.5 以上が必要らしいので Python 3.6 をインストールします。念の為、 Python の新しいパッケージが存在しないか確認をします。

# yum search python

Python の一番新しいパッケージ( XX-python##-python の ## の番号が 35 以降で大きいもの)をインストールします。ここでは、 rh-python36-python をインストールします。

# yum install rh-python36-python

インストール後、どこに展開されたか確認するため、パッケージ情報を確認します。

# rpm -ql rh-python36-python

certbot のインストール

Certbot - Pip Other を参考にしながら certbot のインストールを行います。

仮想環境を展開するために python venv ... と実行している箇所は先程確認したパッケージ情報から python の実行ファイルを実行するのに注意が必要です。

また、既存環境で Apache Plugin などインストールしている場合は、競合して利用できないため、初回の certbot 実行時に standalone ではなく、 webroot モードで実行する必要があります。

certbot が実行でき、証明書が更新されたことを確認した後に cron の設定を変更して作業終了です。

まとめ

CentOS のアップデートはなかなか難しいので、リプレースが必要になりますが、式年遷宮になるので、ハードルが少し高いと常々思わされます。今回はリプレースが間に合わなかったので、荒業で対応しましたが、リプレースできるならしたほうがいいと思います。

最近、 Ubuntu を好んで使っていますが、思ったよりも式年遷宮感少なく、最近のアップデートは 1 時間ぐらいのメンテナンスでできているので、ある程度楽になっていると改めて思わされました。

ちなみに、 ISRG な Root 証明書を持つ Let’s Encrypt の証明書は Python 3.5 以降でないと発行できないように見えた(要確認)ので、ある意味、 11 月までにもう一度騒ぎがあるのかもしれません。

参考