JavaScript勉強会

JavaScriptの学習日記

Certbotのエラーメッセージ

WebサイトのSSL証明書でLet's Encryptを利用しています。

SSL証明書を定期的に更新するツールとして「Certbot」を使っていますが、エラーメッセージが出ていたので、解決方法を調べてみました。

 

f:id:jsstudy:20210514115736p:plain

 

jsstudy.hatenablog.com

 

 

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.

 

certbot.eff.org

 

解決策の調査

www.google.com

 

snapの用意

 

choppydays.com

 

新しいcertbotのインストールには snap が必要になりました。

 

新しいバージョンのCertbotは、更新(インストール)が「snap」で管理されており、snapの用意が必要になっている、とのこと。

 

ja.wikipedia.org

 

Snappyとはカノニカルが設計・開発したソフトウェアデプロイメントシステムかつパッケージ管理システムであり、元々はUbuntu Phoneオペレーティングシステム用に設計・開発された。

Snappyのパッケージは 'Snap' と呼ばれ、Snapを使うツールは 'Snapd' と呼ばれる。

Snapは様々なLinuxディストリビューションで動作するので、ディストリビューションの上流のソフトウェアデプロイメントに依存しない。

Snappyのシステムは携帯電話、クラウド、IoTやデスクトップパソコン向けに設計されている。

 

snapは、Ubuntuの開発元であるカノニカル社が作っているLinuxパッケージ管理ツールとのこと。

Ubuntuなら最初からsnapが入っているそうなので、WebサーバーOSにはUbuntuが良いかもしれませんね。

 

jsstudy.hatenablog.com

 

getSSLで代用

 

OSバージョンが古くcertbotの更新ができない

サーバーのOSバージョンが古い場合、snapもインストールができない場合があります。

これは対応しているEPELリポジトリにsnapが含まれていないためにエラーになります。

certbotの代替として「GetSSL」をインストール

snapがインストールできない環境ではcertbotの利用ができません。

その場合、getSSLlet’s encrypt証明書をインストールします。

 

Ubuntu以外のLinuxディストリビューションを使っている等で、snapをインストールできなかった場合は、Certbotの代替として「getSSL」を使う方法も紹介されていました。

 

github.com

 

qiita.com

 

Let's EncryptにはCertbot以外にもいくつかのクライアントがあり、「ACME Client Implementations」で紹介されています。今回はリストの先頭で紹介されていたGetSSLを使いました。GetSSLはbashスクリプトで実現されています。

 

letsencrypt.org

 

↑Let's Encryptの公式サイトではCertbotが推奨されていますが、Certbot以外のツールも多数紹介されていました。

 

blog.livedoor.jp

 

うちのサーバーでcertbotを使用したLet's Encryptの証明書作成がうまくいかず(python関係がダメだった)、別のやり方をということでGetSSLを使用したところ、問題なく作成できたのでメモ。
このやり方だと、サーバーを止めずとも証明書取得ができるのでオススメ。

 

CertbotはPyhtonを使っているので、Python関係で不具合が発生すると、Certbotがうまく動作しない場合があると。

そういう場合は、getSSLなど他のクライアントツールを使えばOK。

 

ACME v2対応の確認

念のため、今使っているCertbotが最新のACME(証明書自動発行のためのプロトコル:Automated Certificate Management Environment)に対応していることも確認しておきました。

 

rooter.jp

 

/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を明示的に利用する設定が正しく反映されています。

 

letsencrypt.org

 

まとめ

Certbotで出たエラーメッセージの対処方法

  1. snapでCertbotをインストール(管理)する。
  2. snapが使えない場合は、getSSLなどCertbot以外のLet's Encryptクライアントツールを採用してみる。

 

そんなかんじでOKみたいです。