Check-Host.cc

グローバルCAAレコードチェッカー

CAA (Certification Authority Authorization) レコードは、公開鍵インフラストラクチャ (PKI) を強化するためにRFC 6844で導入された重要なセキュリティ拡張です。CAAレコードを使用すると、ドメイン管理者は、自社のインフラストラクチャに対してSSL/TLS証明書を発行することが法的に許可されている認証局 (Let's Encrypt、DigiCert、Sectigoなど) を明示的に定義できます。これは、中間者 (Man-in-the-Middle) 攻撃のために不正な信頼できる証明書を生成する悪意のある、または侵害された認証局に対する積極的な境界防御 (Perimeter Defense) として機能します。

発行前の必須チェック

2017年以降、CA/Browser Forumは、すべての商用CA (認証局) が証明書を発行する前にCAAレコードのDNSルックアップを実行することを義務付けています。自動化されたACMEクライアントまたは管理者が証明書を要求すると、CAはゾーンを照会します。CAAレコードが存在しない場合、CAは暗黙の許可を想定して証明書を発行します。ただし、CAAレコードが存在し、要求しているCAのホスト名 (例: letsencrypt.org) がペイロードに明示的にリストされていない場合、発行プロセスはハードブロックされ、CAレベルで即座に中止されます。

Tree-Climbing (ツリークライミング) と適用範囲

CAAアーキテクチャの強力な側面の1つは、その「ツリークライミング」解析ロジックです。管理者が深くネストされたサブドメイン (例: api.staging.example.com) の証明書を要求した場合、認証局はその正確なノードでCAAレコードをクエリします。見つからない場合は上方に解析を行い、 staging.example.com をチェックし、最終的にApexドメインである example.com をチェックします。これは、ルートドメインに展開された単一のCAAレコードが包括的なセキュリティポリシーとして機能し、自動的に下方にカスケードして、その下にあるすべてのサブドメインを不正な発行から保護することを意味します。

自動更新の失敗のデバッグ

CAAレコードはセキュリティを劇的に向上させますが、最新のDevOpsパイプラインにおいて突然のサイレントなSSL障害を引き起こす主な原因でもあります。企業がDigiCertが発行した手動のワイルドカード証明書から、Kubernetesのcert-managerを介した自動のLet's Encrypt更新に切り替えたものの、制限の厳しいCAAレコードの更新を忘れた場合、更新ボットは失敗します。CAは承認エラーを返し、最終的には稼働中の証明書の有効期限が切れ、すべてのエンドユーザーに対してブラウザの警告がトリガーされます。さらに、管理者はCAAペイロード内に iodef タグを設定することで、ブロックされた発行試行が発生するたびに、セキュリティチームに自動メールやWebhookアラートを送信するようCAに指示できます。