Let's Encrypt のスタッフは 11 月 10 日 22:02 UTC、本番 API が 6 か所のリモート検証拠点を使うようになったことを確認しました。これにより、ドメイン検証 1 回につき合計 7 回のリクエストが行われます。プライマリデータセンターから 1 回、リモート拠点から 6 回で、これまでのリモート拠点は 4 か所でした。検証が成功するのは、プライマリデータセンターと、必要な数のリモート拠点のすべてが正しい応答を受け取った場合だけです。この変更は 10 月 15 日に予告され、10 月 27 日にステージング環境で有効になっていました。Let's Encrypt は利用者への影響はほとんど、あるいはまったくないと見込んでいますが、いくつかの種類の構成は事前に確認しておく価値があります。

なぜ拠点を増やすのか

複数のネットワーク拠点から同時に検証するのは、攻撃者が BGP ハイジャックで検証のトラフィックを自分のところへ引き込み、他人のドメインの証明書を取得するのを防ぐためです。Let's Encrypt は 2020 年からこれを実施しており、今回の増加は業界ルールの強化によるものです。CA/Browser Forum の Baseline Requirements 第 3.2.2.9 項は、2026 年 12 月 15 日以降、認証局は少なくとも 5 か所のリモートネットワーク拠点から検証しなければならず、それらの拠点は少なくとも 2 つの異なる地域インターネットレジストリのサービス地域に分散していなければならず、そうでなければ発行してはならないと定めています。そのため、他の認証局も同様の変更を行うことになります。

更新に失敗するようになる可能性のある構成

  • 訪問者を国や地域でブロックするファイアウォールや CDN のルール。検証リクエストはこれまでより多くの地域から届くようになり、十分な数の拠点がブロックされると検証は失敗します。Let's Encrypt は検証元の IP アドレスを公開しておらず、いつでも変わりうるとしているため、許可リストでは対応できません。確実な方法は、/.well-known/acme-challenge/ のパスを全世界に対して開けておくことです。HTTP-01 検証はポート 80 を使い、ポート 80 または 443 へのリダイレクトをたどります。
  • 一部の地域にしか応答しない権威 DNS。たとえば地域に応じた名前解決や、地域制限のある DNS ファイアウォールです。DNS-01 検証では TXT レコードがすべての拠点から見える必要があり、HTTP-01 検証もまずドメインを名前解決するため、同じように影響を受けます。
  • 「既知の少数の IP」だけにポート 80 への到達を許可しているセキュリティグループやファイアウォール。理由は 1 つ目の項目と同じで、検証元は固定されておらず、公開もされていません。

事前にテストする方法

ステージング環境は 10 月 27 日から 6 か所のリモート拠点を使っており、certbot の dry-run モードはまさにこの環境と通信します。そのため、サーバーで sudo certbot renew --dry-run を一度実行すれば、新しい検証のもとで更新が通るかどうかがわかります。失敗した場合は、通らなかったドメインと検証の種類がエラーに示されるので、上の 3 項目と照らし合わせて確認してください。今確認しておくべき理由はもう 1 つあり、更新の頻度がまもなく上がります。Let's Encrypt の証明書の既定の有効期間は 2027 年 2 月 10 日に 64 日へ短縮されます(こちらの記事で説明しています)。6 日間の短期証明書はこちらの記事で取り上げています。証明書の発行と自動更新はLet's Encrypt SSL のチュートリアルで説明しています。Cloudflare で国別ブロックのルールを設定している場合は、検証用のパスに例外を追加するのを忘れないでください。Cloudflare の基本はこちらです。