CAAレコードとは?
CAA(Certification Authority Authorization)レコードは、どの認証局がドメインの証明書を発行してよいかをドメインが宣言できるようにします。CAはCA/Browser Forumによってこれらのレコードを尊重することが義務付けられているため、誤発行(CAがあなたのドメインの証明書を誤って発行すること)のリスクを減らします。CAAは、TLS証明書に対するシンプルで強力なガードレールです。
CAAレコードの仕組み
CAAレコードは、許可された認証局をそのドメインで指定します。発行前に、準拠したCAはあなたのドメインのCAAレコードを確認し、レコードが存在してそのCAが列挙されていなければ、発行を拒否しなければなりません。レコードには3つの部分があります。フラグ、タグ、値です。一般的なタグは、issue(標準証明書を発行するCAを認可)、issuewild(ワイルドカード証明書を特に制御)、iodef(CAがポリシー違反を報告するURLまたはmailto)です。例えば、issue "letsencrypt.org" はLet's Encryptのみに発行を許可します。
CAA検索結果の読み解き方
IPeekは、ドメインのCAAレコードを、それぞれタグと値とともに一覧表示します。issueタグを読んで、どのCAが認可されているかを確認してください。"letsencrypt.org" や "digicert.com" のような値は、許可された認証局を指定します。issuewildタグは、誰がワイルドカード証明書を発行してよいかを制限します。issueの値が ";"(セミコロン)なら、どのCAも認可されていないことを意味します。ドメインにCAAレコードがなければ、任意の公開CAが発行でき、これが許容的な既定です。列挙されたCAが、実際に証明書に使っているプロバイダーと一致することを確認してください。
CAAレコードが証明書のセキュリティを向上させる理由
CAAがなければ、数十もの公開認証局のいずれもがあなたのドメインの証明書を発行できるため、1つの侵害されたまたは欺かれたCAだけで、攻撃者が有効な証明書を取得できてしまいます。CAAは、その攻撃対象領域を、あなたが指定したCAだけに絞り込みます。CA/Browser Forumが発行前のCAAチェックをCAに義務付けているため、この保護は業界全体で強制されます。iodefタグを追加すれば、認可されたCAがポリシー違反の試みを通知でき、取得すべきでない証明書を取得しようとする者の早期警告が得られます。