浜松のWEBシステム開発・スマートフォンアプリ開発・RTK-GNSS関連の開発はお任せください
株式会社シーポイントラボ
TEL:053-543-9889
営業時間:9:00~18:00(月〜金)
住所:静岡県浜松市中区富塚町1933-1 佐鳴湖パークタウンサウス2F

サポートの終わったCentOS 6 でとりあえずcertbotを使えるようにする

Let's Encrypt

あまりよろしくないのですが、管理しているサーバーのうち、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を使いたい方は参考にしてみてください。

  • この記事いいね! (3)