少し前に、 Let's Encrypt から下記のようなメールが来てました。
Hi, According to our records, the software client you're using to get Let's Encrypt TLS/SSL certificates issued or renewed at least one HTTPS certificate in the past two weeks using the ACMEv1 protocol. Here are the details of one recent ACMEv1 request from each of your account(s): Client IP address: xxx.xxx.xxx.xxx User agent: CertbotACMEClient/0.23.0 (certbot; Ubuntu 18.04.2 LTS) Authenticator/webroot Installer/None (renew; flags: n) Py/3.6.8 Hostname(s): "xxxxx.example.com" Request time: 2020-04-17 05:28:17 UTC 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 If you're unsure how your certificate is managed, get in touch with the person who installed the certificate for you. If you don't know who to contact, please view the help section in our community forum at https://community.letsencrypt.org/c/help and use the search bar to check if there's an existing solution for your question. If there isn't, please create a new topic and fill out the help template. ACMEv1 API deprecation details can be found in our community forum: https://community.letsencrypt.org/t/end-of-life-plan-for-acmev1 As a reminder: In the future, Let's Encrypt will be performing multiple domain validation requests for each domain name when you issue a certificate. While you're working on migrating to ACMEv2, please check that your system configuration will not block validation requests made by new Let's Encrypt IP addresses, or block multiple matching requests. Per our FAQ (https://letsencrypt.org/docs/faq), we don't publish a list of IP addresses we use to validate, and this list may change at any time. To receive more frequent updates, subscribe to our API Announcements: https://community.letsencrypt.org/t/about-the-api-announcements-category Thank you for joining us on our mission to create a more secure and privacy- respecting Web! All the best, Let's Encrypt
どうも、
Let's Encrypt の更新で使っているプロトコル ACME v1 が古いので ACME v2 に変更してください。 変更しないと更新できなくなりますよ。
ということのようです(2020/6/1という日付は、 ACME v1 での新規ドメインの受付を停止する期日なので、すぐさま更新できなくなるわけではないようです)。
ということなので、 ACME v2 を使うようにしてみます。
certbot の更新
上記のメールを読むと、クライアント(こちらの記事でセットアップした Rainloop のサーバーなので、クライアントは certbot になります)を更新すればOKだよ、とあるので、とりあえず更新してみます。
現在の certbot のバージョンが 0.23.0 だったので、
ubuntu@ip-xxx-xxx-xxx-xxx:~$ apt list --upgradable | grep -i cert
で確認すると certbot のバージョンは 0.27 でした。
これもちょっと古いっぽいです。
ソースコードから入れなきゃいけないのかなと思いつつもうちょっと調べてみると、 certbot の提供元のサイトで OS とWebサーバーを入力したら、PPA を追加したら最新版が使えそうなことがわかりました。
追加してみます。
ubuntu@ip-xxx-xxx-xxx-xxx:~$ sudo add-apt-repository ppa:certbot/certbot This is the PPA for packages prepared by Debian Let's Encrypt Team and backported for Ubuntu. Note: Packages are only provided for currently supported Ubuntu releases. 詳しい情報: https://launchpad.net/~certbot/+archive/ubuntu/certbot [ENTER] を押すと続行します。Ctrl-c で追加をキャンセルできます。 ヒット:1 http://archive.ubuntulinux.jp/ubuntu bionic InRelease ヒット:2 http://archive.ubuntulinux.jp/ubuntu-ja-non-free bionic InRelease ヒット:3 http://ap-northeast-1.ec2.archive.ubuntu.com/ubuntu bionic InRelease ヒット:4 http://ap-northeast-1.ec2.archive.ubuntu.com/ubuntu bionic-updates InRelease ヒット:5 http://ap-northeast-1.ec2.archive.ubuntu.com/ubuntu bionic-backports InRelease 取得:6 http://ppa.launchpad.net/certbot/certbot/ubuntu bionic InRelease [21.3 kB] ヒット:7 http://security.ubuntu.com/ubuntu bionic-security InRelease 取得:8 http://ppa.launchpad.net/certbot/certbot/ubuntu bionic/main amd64 Packages [8,032 B] 取得:9 http://ppa.launchpad.net/certbot/certbot/ubuntu bionic/main Translation-en [4,176 B] 33.5 kB を 2秒 で取得しました (19.4 kB/s) パッケージリストを読み込んでいます... 完了 ubuntu@ip-xxx-xxx-xxx-xxx:~$
確認してみます。
ubuntu@ip-xxx-xxx-xxx-xxx:~$ sudo apt update ubuntu@ip-xxx-xxx-xxx-xxx:~$ apt list --upgradable | grep certbot WARNING: apt does not have a stable CLI interface. Use with caution in scripts. certbot/bionic 0.31.0-1+ubuntu18.04.1+certbot+1 all [0.23.0-1 からアップグレード可] python3-acme/bionic 0.31.0-2+ubuntu18.04.3+certbot+2 all [0.22.2-1ubuntu0.1 からアップグレード可] python3-certbot/bionic 0.31.0-1+ubuntu18.04.1+certbot+1 all [0.23.0-1 からアップグレード可] python3-configobj/bionic 5.0.6-2+ubuntu18.04.1+certbot+1 all [5.0.6-2 からアップグレード可] python3-future/bionic 0.15.2-4+ubuntu18.04.1+certbot+3 all [0.15.2-4ubuntu2 からアップグレード可] python3-josepy/bionic 1.1.0-2+ubuntu18.04.1+certbot+1 all [1.1.0-1 からアップグレード可] python3-parsedatetime/bionic 2.4-3+ubuntu18.04.1+certbot+3 all [2.4-2 からアップグレード可] python3-zope.component/bionic 4.3.0-1+ubuntu18.04.1+certbot+3 all [4.3.0-1 からアップグレード可] python3-zope.hookable/bionic 4.0.4-4+ubuntu18.04.1+certbot+1 amd64 [4.0.4-4build4 からアップグレード可] python3-zope.interface/bionic 4.3.2-1+ubuntu18.04.1+certbot+1 amd64 [4.3.2-1build2 からアップグレード可] ubuntu@ip-xxx-xxx-xxx-xxx:~$
0.31.0 が使えるようです。
certbot の更新
本当は certbot だけ更新すればよかったのですが、何を思ったか勢い余って、
ubuntu@ip-xxx-xxx-xxx-xxx:~$ sudo apt upgrade
でシステム全体のアップグレードをしてしまいました。我ながらイケてないですね。
一応、書いておくと、アップグレード中に
設定ファイル '/etc/cron.d/certbot' ==> これはインストールしてから (あなたかスクリプトによって) 変更されています。 ==> パッケージ配布元が更新版を提供しています。 どうしますか? 以下の選択肢があります: Y か I : パッケージメンテナのバージョンをインストールする N か O : 現在インストールされている自分のバージョンを残す D : 両バージョンの差異を表示する Z : 状況を調査するためにシェルを開始する デフォルトでは現在使っている自分のバージョンを残します。 *** certbot (Y/I/N/O/D/Z) [デフォルト=N] ?
と聞かれたので、デフォルトのNを選びました。
更新した certbot のバージョンを確認すると
ubuntu@ip-xxx-xxx-xxx-xxx:~$ certbot --version certbot 0.31.0 ubuntu@ip-xxx-xxx-xxx-xxx:~$
無事 0.31.0 になっているようでした。
ACME v2 を利用していることの確認
さて、これで本当に問題ないのか不安です。そこで、 ACME v2 を使っている確認を行ってみました。
Let's Encrypt のサイトに下記の記述があり
Update your client software to continue using Let's Encrypt - Help - Let's Encrypt Community Support
--dry-run 付で renew を実行して、v2 のステージング環境につながっていればよいような感じです。
日本語の記事もありました。
試してみます。
ubuntu@ip-xxx-xxx-xxx-xxx:~$ sudo certbot renew --force-renew --dry-run --webroot-path /var/www/html/ドキュメントルート Saving debug log to /var/log/letsencrypt/letsencrypt.log - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Processing /etc/letsencrypt/renewal/xxxxx.example.com.conf - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Plugins selected: Authenticator webroot, Installer None Renewing an existing certificate Performing the following challenges: http-01 challenge for xxxxx.example.com Using the webroot path /var/www/html/ドキュメントルート for all unmatched domains. Waiting for verification... Cleaning up challenges - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - new certificate deployed without reload, fullchain is /etc/letsencrypt/live/xxxxx.example.com/fullchain.pem - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ** DRY RUN: simulating 'certbot renew' close to cert expiry ** (The test certificates below have not been saved.) Congratulations, all renewals succeeded. The following certs have been renewed: /etc/letsencrypt/live/ドメイン名/fullchain.pem (success) ** DRY RUN: simulating 'certbot renew' close to cert expiry ** (The test certificates above have not been saved.) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ubuntu@ip-xxx-xxx-xxx-xxx:~$
ログを確認します。
Server: nginx Date: Wed, 13 May 2020 12:49:22 GMT Content-Type: application/pem-certificate-chain Content-Length: 3567 Connection: keep-alive Cache-Control: public, max-age=0, no-cache Link: <https://acme-staging-v02.api.letsencrypt.org/directory>;rel="index"
こんな感じで、 acme-staging-v02 とあるので、大丈夫そうな感じです。
証明書の更新が行われたら、再度確認してみようと思います。