あまりよろしくないのですが、管理しているサーバーのうち、CentOS 6を搭載していて、かつ、OSのアップグレードを行わずにcertbot-autoを動作させる必要がある場面が出てきました。
具体的には、今回の対象のサーバーが、仮想マシンの再起動やコンソールへの直接のアクセスを行う権限を持っていないマシンで、尚且CentOSの場合、OSアップグレード後にSSHサーバーが停止させられてしまう仕様であるため、アップグレードに手を出すに出せない状況になっていました。
しかし、SSLが使えなくなるのは非常にまずかったので、certbot-autoコマンドを実行してみたのですが…
sudo certbot-auto renew --dry-run
Bootstrapping dependencies for Legacy RedHat-based OSes that will use Python3... (you can skip this with --no-bootstrap)
yum is /usr/bin/yum
To use Certbot on this operating system, packages from the SCL repository need to be installed.
Enable the SCL repository and try running Certbot again.
とエラーになり、動作不能に。
いろいろ調べてみたところ、どうも’python3’コマンドで使用できるPythonのバージョンが3.6以上でないとうまく動作しない事がわかりました。
しかしCentOS 6 で利用できる’python3’コマンドの最新バージョンがPython3.4となっていたため、公式リポジトリでは対応できないことが判明。
さらに色々調べてみたところ、iusというリポジトリが、公式リポジトリと被らないパッケージ名でPython3.6を提供していたので、これをインストールして、certbotで使えるようにします。
まず、iusリポジトリを導入します。
sudo yum install -y https://repo.ius.io/ius-release-el6.rpm
これでiusリポジトリからパッケージがインストールできるようになったので、python3.6をインストールします。
sudo yum install -y rh-python36 rh-python36-pip
上記のコマンドで、python3.6が
/opt/rh/rh-python36/root/usr/bin/python3
にインストールされます。
次にシステムの標準で使われるpython3として、/opt/rh/rh-python36/root/usr/bin/python3を登録しておきます。
cd /usr/bin
sudo unlinlk python3
sudo ln -s /opt/rh/rh-python36/root/usr/bin/python3 python3
これで、’python3′ コマンドでpython3.6が使えるようになります。
なお、元のバージョンのpythonに戻す場合は次のようにします。
cd /usr/bin
sudo unlinlk python3
sudo ln -s /usr/bin/python3.4 python3
これでPythonのアップグレードが完了したので、あとはcertbot公式の手順通りに作業を進めていきます。
#certbot用のvirtual envを作成
sudo python3 -m venv /opt/certbot/
#venv内のpipを最新バージョンにアップデート
sudo /opt/certbot/bin/pip install --upgrade pip
#certbotをpipでインストール
sudo /opt/certbot/bin/pip install certbot
#pathが通るディレクトリにcertbotコマンドのリンクを追加
sudo ln -s /opt/certbot/bin/certbot /usr/bin/certbot
ここまでできたら、certbotコマンドが正常にインストールできているか確認します。
certbot --version
コマンド出力の最後に下記のようなバージョンが出てこればインストールは成功です。
certbot 1.13.0
あとは、certbot-autoコマンドの代わりにcertbotコマンドを使用するようにすれば、問題なくSSL証明書の更新や取得が利用可能になるはずです。
let’sencryptの設定(/etc/letsencrypt)の移動も必要ありません。
Cent OS 6で引き続きLet’s Encryptを使いたい方は参考にしてみてください。