TailscaleによるARI採用の教訓
2023年3月以降、Let's EncryptはACME更新情報(ARI)を通じて、レジリエンスと信頼性を向上させています。ARIにより、加入者は証明書の失効と更新を簡単かつ自動的に処理できるようになります。ARIの主な利点は、Let's Encryptが90日よりもさらに短い有効期間の証明書を提供する場合でも、加入者が理想的な更新時期に向けて成功を収められるように設定することです。最近、既存のACMEクライアントにARIを統合する方法に関するエンジニア向けガイドを公開しました。
このブログ記事では、Let's Encryptの加入者であるTailscaleによるARI採用の経験について詳しく説明します。
合計で、2人のTailscaleエンジニアがARIの実装に2日もかかりませんでした。ARI以前、Tailscaleチームは、有効期限の14日前や有効期限までの残り時間の1/3をハードコードするなど、証明書更新ロジックをいくつか反復していました。これらのアプローチの問題点は、Let's Encryptが発行する証明書の有効期間について想定していたことでした。これは将来変更される可能性があります。対照的に、ARIを使用すると、Tailscaleは、何も仮定することなく、更新の決定をLet's Encryptにオフロードできます。
Tailscaleは、証明書の有効期間が短縮され始める前にARIを追加することが特に有用であると指摘しました。なぜなら、証明書の要求と更新を担当するクライアントソフトウェアがユーザーのマシンで実行されているからです。これにより、問題が発生した場合に、フリート全体を一夜にして簡単に更新することはできません。ARIのおかげで、クライアントマシン用の証明書を間に合ってローテーションしないリスクや、過度に熱心なローテーションロジックによりLet's Encryptのインフラストラクチャに過剰な負荷をかけるリスクを軽減しました。
TailscaleチームがARIの採用を決定する際に考慮したことの1つは、更新のためにLet's Encryptインフラストラクチャへのハード依存関係を追加することを避けたいということでした。これを解決するために、Tailscale証明書更新ロジックは、何らかの理由でARIエンドポイントに到達できない場合は、ローカルの時間ベースのチェックにフォールバックします。
TailscaleによるARIの本番環境での導入ロードマップ
-
golang.org/x/cryptoのフォークを更新して、ARIをサポート
-
Tailscaleクライアントの更新コードを更新
-
開発ドメインの証明書をリクエストしてローカルでテスト
-
ハードコードされたデータでARIレスポンスをスタブアウトして更新をテスト
-
ARIリクエストをブロックしてフォールバックをテスト
-
出荷!
チームは、プロセス中に1つの問題に遭遇したと報告しました。RFCがまだ完成していないため、ACMEのアップストリームGoパッケージはまだARIをサポートしていません。解決策として、そのGoパッケージのフォークにサポートを追加しました。ARIを採用する加入者へのTailscaleの主なアドバイス:ARIリクエストにタイムアウトを設定することを忘れないでください!
ARIの採用経験と他の加入者へのアドバイスを共有してくれたTailscaleチームに感謝します。TailscaleはARIの採用者であるだけでなく、Let's Encryptのスポンサーでもあります!より安全なウェブを構築するための私たちの活動をサポートしていただきありがとうございます。
また、Open Technology Fundからの寛大なご支援のおかげで、ACME更新情報の取り組みでプリンストン大学と提携できることを感謝しています。
インターネットセキュリティリサーチグループ(ISRG)は、Let's Encrypt、Prossimo、Divvi Upの親組織です。ISRGは501(c)(3)非営利団体です。私たちの活動をサポートしたい場合は、参加、寄付、またはあなたの会社にスポンサーになることを奨励することを検討してください。