CentOS6でLet’s Encrypt(certbot-auto)がエラーになる場合の対処法

Linux

CentOS6で運用しているサービスをいくつか管理しているのですが、最近、Let’s Encrypt(certbot-auto)によるSSL証明書の更新が失敗するようになりましたので対処しました。

エラーの原因は、以下のとおりです。

  • certbotのバージョンが新しくなった
  • 新しいcertbotはpython2.7以上が必要
  • CentOS6のpythonのバージョンは2.6.6

つまり、CentOS6にインストールされているpythonのバージョンが古いため、新しいcertbotが起動できずエラーが発生したということのようです。

ならば、CentOS6のpythonを手動で2.7以降にバージョンアップすれば良いということになりますが、それをやってしまいますと別の困った問題が発生します。CentOS6のyumはpython2.6を必要とします。2.7にバージョンアップするとyumが使えなくなってしまい、もっと困ったことになるのです。

そこで、Software Collections (SCL)という、複数のパージョンのアプリケーション(PHP、Ruby、Python、MySQLなど)を使い分けるためのパッケージを導入して対策してみました。

 導入方法は以下のとおりです。

# リポジトリを追加します。/etc/yum.repos.d/CentOS-SCL.repo が追加されます。
yum install centos-release-SCL

# SCL用のpython3.6をインストールします(通常のpython3.6とは異なります!)
yum install rh-python36

# bashでpython3.6を使用できるようにする
scl enable rh-python36 bash

以上のように設定すると、bashでpython3.6が使えるようになります。
yumも問題なく使用できます。

※bash上で上記の作業を行った場合は、一旦bashを出て入り直すとpython3.6に切り替わります。

Let’s Encrypt用のシェルスクリプトを作ります。
私の環境では、以下のようなスクリプトで問題なく動いています。
(パス等は各々の環境に合わせて適宜書き換えてください。)

#!/bin/bash
/usr/bin/certbot-auto renew --renew-hook "/sbin/service httpd reload"

このシェルスクリプトに実行権限を与えて、cronに登録してやればOKです。

コメント

タイトルとURLをコピーしました