Certbotのエラーメッセージ
WebサイトのSSL証明書でLet's Encryptを利用しています。
SSL証明書を定期的に更新するツールとして「Certbot」を使っていますが、エラーメッセージが出ていたので、解決方法を調べてみました。
Certbotのエラーメッセージ
Your system is not supported by certbot-auto anymore.
certbot-auto and its Certbot installation will no longer receive updates.
You will not receive any bug fixes including those fixing server compatibility
or security problems.
Please visit https://certbot.eff.org/ to check for other alternatives.
解決策の調査
snapの用意
新しいcertbotのインストールには snap が必要になりました。
新しいバージョンのCertbotは、更新(インストール)が「snap」で管理されており、snapの用意が必要になっている、とのこと。
Snappyとはカノニカルが設計・開発したソフトウェアデプロイメントシステムかつパッケージ管理システムであり、元々はUbuntu Phoneオペレーティングシステム用に設計・開発された。
Snappyのパッケージは 'Snap' と呼ばれ、Snapを使うツールは 'Snapd' と呼ばれる。
Snapは様々なLinuxディストリビューションで動作するので、ディストリビューションの上流のソフトウェアデプロイメントに依存しない。
Snappyのシステムは携帯電話、クラウド、IoTやデスクトップパソコン向けに設計されている。
snapは、Ubuntuの開発元であるカノニカル社が作っているLinuxパッケージ管理ツールとのこと。
Ubuntuなら最初からsnapが入っているそうなので、WebサーバーOSにはUbuntuが良いかもしれませんね。
getSSLで代用
OSバージョンが古くcertbotの更新ができない
サーバーのOSバージョンが古い場合、snapもインストールができない場合があります。
これは対応しているEPELリポジトリにsnapが含まれていないためにエラーになります。
certbotの代替として「GetSSL」をインストール
snapがインストールできない環境ではcertbotの利用ができません。
その場合、getSSLでlet’s encrypt証明書をインストールします。
Ubuntu以外のLinuxディストリビューションを使っている等で、snapをインストールできなかった場合は、Certbotの代替として「getSSL」を使う方法も紹介されていました。
Let's EncryptにはCertbot以外にもいくつかのクライアントがあり、「ACME Client Implementations」で紹介されています。今回はリストの先頭で紹介されていたGetSSLを使いました。GetSSLはbashスクリプトで実現されています。
↑Let's Encryptの公式サイトではCertbotが推奨されていますが、Certbot以外のツールも多数紹介されていました。
うちのサーバーでcertbotを使用したLet's Encryptの証明書作成がうまくいかず(python関係がダメだった)、別のやり方をということでGetSSLを使用したところ、問題なく作成できたのでメモ。
このやり方だと、サーバーを止めずとも証明書取得ができるのでオススメ。
CertbotはPyhtonを使っているので、Python関係で不具合が発生すると、Certbotがうまく動作しない場合があると。
そういう場合は、getSSLなど他のクライアントツールを使えばOK。
ACME v2対応の確認
念のため、今使っているCertbotが最新のACME(証明書自動発行のためのプロトコル:Automated Certificate Management Environment)に対応していることも確認しておきました。
/var/log/letsencrypt/letsencrypt.log に詳細なデバッグログが含まれるログが出力されますので 内容を確認してください。
certbot renewのリクエスト先がhttps://acme-staging.api.letsencrypt.org/directory.である場合はACMEv2への対応が必要となる可能性があります。
GET request to https://acme-staging-v02.api.letsencrypt.org/directoryというように、v02とついたURIに証明書発行のリクエストが行われていればACMEv2を明示的に利用する設定が正しく反映されています。
まとめ
Certbotで出たエラーメッセージの対処方法
そんなかんじでOKみたいです。