てっくらのーとは、触れた技術のメモと日常の記録が少し合わさった個人のサイトです。
ACMEプロトコルのバージョンをアップデートした
Let’sEncrypt(LE)で使用されている ACMEプロトコルのバージョンをアップデートします。
経緯
下のようなメールが来ていました。
Update your client software to continue using Let’s Encrypt
Beginning June 1, 2020, we will stop allowing new domains to validate using the ACMEv1 protocol. You should upgrade to an ACMEv2 compatible client before then, or certificate issuance will fail. For most people, simply upgrading to the latest version of your existing client will suffice. You can view the client list at: https://letsencrypt.org/docs/client-options/
2020年6月1日以降にACMEv1
プロトコルを使用した更新動作が出来なくなりますよ、ということです。Webを少し見ると同様な方も多数いらっしゃっており、その方達と同じようにさっさと対処すべき話なのですが、June 1 2020
という表記に完全に気を許してしまい気づいたら5月31日でした。今年2月からメールが来ていたのにね…。この放置癖には自分のことながら呆れかえります。
どうやらJune 1 2020
はACMEv1
の新規受付が不可となるだけのようにも見受けられその気になればまだ放置継続出来る可能性もあったわけですが、いざ更新動作が止まったら嫌だなと何を今更と思い直したので対応いたしました、という話です。
環境
$ cat /etc/os-release
NAME="Ubuntu"
VERSION="18.04.4 LTS (Bionic Beaver)"
(略)
$ certbot --version
certbot 0.27.0
方針確認
メールを斜め読みした当初は、LEの更新クライアントであるcertbot
をアップデートすればよいのか?と考えてアップデートを進めていました。ですが、アップデートしたあとに手動で証明書を更新をしてみてもACMEv2
で接続する気配が見えませんでした。よくよく確認してみると、どうやらそれは正確ではなかったようでした。
certbot
のバージョンが0.22.0
以上であることを確認する。- 1がOKな場合LEのconfファイルを編集する。1がNGの場合はバージョンを
0.22.0
以上にアップデートしてからconfファイルを編集する。
私はcertbot
のアップデートを行ったあと2を作業したのですが、下のリンク先が示しているとおりcertbot
がバージョン0.22.0
以上であればACMEv2
に対応しているため実はバージョンアップは必要無くconfファイルの編集のみで良かったのでは?と考えたところから来ています。
Confファイルの設定変更
LEのconfファイルの設定変更を行います。
- /etc/letsencrypt/renewal/(DomainName).conf
(略)
# Options and defaults used in the renewal process
[renewalparams]
authenticator = webroot
account = xxxxxxxxxxxxxxxxxxxxxxxxx
- server = https://acme-v01.api.letsencrypt.org/directory
+ server = https://acme-v02.api.letsencrypt.org/directory
[[webroot_map]]
mkr-note.net = /hoge/fuga/
server
のURLの一部を01
から02
へ変更します。これだけです。
確認
実際に更新作業を行います。下では直接更新を行っていますが、dry-run
でも確認自体は可能と思います。
$ sudo certbot renew --force-renewal
更新後にログを確認します。
- /var/log/letsencrypt/letsencrypt.log
2020-05-30 16:21:04,372:DEBUG:acme.client:Sending GET request to https://acme-v02.api.letsencrypt.org/directory.
2020-05-30 16:21:04,384:DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): acme-v02.api.letsencrypt.org
2020-05-30 16:21:05,718:DEBUG:urllib3.connectionpool:https://acme-v02.api.letsencrypt.org:443 "GET /directory HTTP/1.1"
200 658
エンドポイントがv02
になっていますね。よかった。
出来ればブラウザでも変更されていることを確認したいのですが、あくまでプロトコル上の話であり証明書の内容には関連しないので、ブラウザから閲覧できる証明書には情報は載らないで理解が合っているのかしら。地味に気になる点ではある。また、02
に変更しなくてもcertbot
のアップデートだけでエンドポイントが変更となった報告もあったりするので少しもやもやする。[renewalparams]
の書き方次第なのかな、という気はしていますがあまり調べていません。
(おまけ) certbot のアップデート
というわけで無事2020年6月1日を前に対処が完了したのですが、certbot
のアップデートについても実施したので方法をメモしておきます。こちらのPPAを使用します。
$ sudo add-apt-repository ppa:certbot/certbot
Get:21 http://ppa.launchpad.net/certbot/certbot/ubuntu bionic/main amd64 Packages [8,032 B]
Get:24 http://ppa.launchpad.net/certbot/certbot/ubuntu bionic/main Translation-en [4,176 B]
(略)
このあとは普通にupdate
したあとcertbot
をインストールします。
$ sudo apt update
$ sudo apt install certbot
最後にバージョンを確認します。
$ certbot --version
certbot 0.31.0
書いておいて何なのですが、Ubuntuの最新LTSである20.04
ですと0.40.0
がインストールされるので、そちらにアップグレードすることでも目的を達成できます。