Labee Dev Toolbox
技術ノートガイド用語解説
無料で試す
  1. ホーム
  2. / 用語解説
  3. / CAA レコード
DNS

CAA レコード

2026年1月22日 更新

概要

CAA レコード(Certification Authority Authorization Record) は、ドメインに対して SSL/TLS 証明書を発行できる認証局(CA)を DNS 上で明示的に指定するレコードです。RFC 8659(2019年)で標準化されており、DNS のレコードタイプ番号は 257 です。

CAA レコードが設定されていないドメインには、どの認証局でも証明書を発行できます。CAA レコードを設定すると、指定された認証局だけが証明書を発行でき、それ以外の認証局は発行を拒否する義務を負います。CA/Browser Forum の Baseline Requirements(Ballot 187)により、2017年9月8日以降、すべてのパブリック認証局は証明書発行前に CAA レコードを確認することが義務付けられています。

CAA レコードは証明書の誤発行や不正発行のリスクを低減する防御レイヤーとして機能します。DNSSEC と組み合わせると、DNS レスポンスの改ざんも防げるため、より強固な保護になります。

仕組み

CAA レコードのフィールド構成、タグの種類、ドメインツリーの探索ルールを説明します。

レコードの構造

CAA レコードは 3 つのフィールドで構成されます。

example.com.  IN  CAA  <flags> <tag> <value>
フィールド説明
flags0 または 128。128(critical フラグ) を設定すると、認証局がそのタグを理解できない場合に証明書発行を拒否する
tagissue、issuewild、iodef のいずれか
value認証局のドメイン名や通知先 URL

タグの種類

CAA レコードには 3 種類のタグがあります。

issue は、そのドメインに対して通常の証明書を発行できる認証局を指定します。

example.com.  IN  CAA  0 issue "letsencrypt.org"

issuewild は、ワイルドカード証明書(*.example.com)を発行できる認証局を指定します。issuewild が設定されている場合、ワイルドカード証明書の発行には issue ではなく issuewild の指定が参照されます。issuewild が存在しない場合は issue の指定がワイルドカード証明書にも適用されます。

example.com.  IN  CAA  0 issuewild "letsencrypt.org"

iodef は、CAA ポリシーに違反する証明書発行リクエストがあった場合の通知先を指定します。

example.com.  IN  CAA  0 iodef "mailto:security@example.com"

ドメインツリーの探索

認証局が www.example.com の証明書発行リクエストを受けた場合、まず www.example.com に CAA レコードがあるかを確認します。存在しなければ親ドメインの example.com を確認します。RFC 8659 ではこのツリー探索アルゴリズムが簡素化され、RFC 6844 で問題だった CNAME チェーンの非効率な処理が改善されました。

CAA レコードがどの階層にも見つからなかった場合、認証局は制約なしと判断し、証明書を発行できます。

RFC 8657 による拡張

RFC 8657(2019年)では issue / issuewild タグに 2 つのパラメーターが追加されました。

accounturi は、証明書発行を特定の ACME アカウントに限定します。ドメインを一時的に乗っ取られた場合でも、攻撃者が別の ACME アカウントから証明書を発行することを防ぎます。

example.com.  IN  CAA  0 issue "letsencrypt.org; accounturi=https://acme-v02.api.letsencrypt.org/acme/acct/1234567890"

validationmethods は、認証局が使える検証方法を制限します。

example.com.  IN  CAA  0 issue "letsencrypt.org; validationmethods=dns-01"

設定例

代表的な CAA レコードの設定パターンを示します。

単一の認証局を許可

Let’s Encrypt のみに証明書発行を許可し、違反時の通知先を設定する構成です。

example.com.  IN  CAA  0 issue "letsencrypt.org"
example.com.  IN  CAA  0 issuewild "letsencrypt.org"
example.com.  IN  CAA  0 iodef "mailto:security@example.com"

複数の認証局を許可

Let’s Encrypt と DigiCert の両方に発行を許可する場合は、issue タグを複数設定します。

example.com.  IN  CAA  0 issue "letsencrypt.org"
example.com.  IN  CAA  0 issue "digicert.com"
example.com.  IN  CAA  0 issuewild "letsencrypt.org"
example.com.  IN  CAA  0 iodef "mailto:security@example.com"

ワイルドカード証明書を禁止

通常の証明書は許可するが、ワイルドカード証明書の発行はどの認証局にも許可しない設定です。issuewild に空文字列を指定します。

example.com.  IN  CAA  0 issue "letsencrypt.org"
example.com.  IN  CAA  0 issuewild ";"

すべての認証局を拒否

テスト環境や内部ドメインで、パブリック認証局による証明書発行を完全に禁止する場合は issue に空文字列を指定します。

example.com.  IN  CAA  0 issue ";"

確認方法

dig で CAA レコードを確認するには次のコマンドを使います。

dig CAA example.com

出力の ANSWER SECTION に CAA レコードが表示されます。

;; ANSWER SECTION:
example.com.		86400	IN	CAA	0 issue "letsencrypt.org"
example.com.		86400	IN	CAA	0 issuewild "letsencrypt.org"
example.com.		86400	IN	CAA	0 iodef "mailto:security@example.com"

+short オプションで値だけを表示する方法も有用です。

dig CAA example.com +short
0 issue "letsencrypt.org"
0 issuewild "letsencrypt.org"
0 iodef "mailto:security@example.com"

特定のネームサーバーを指定して確認する場合は @ を使います。

dig CAA example.com @8.8.8.8

外部の視点からも確認したい場合は、Labee Dev Toolbox の DNS API を使うと、外部の視点から見た結果を取得できます。

curl "https://labee.dev/api/dns?domain=example.com&type=CAA"

レスポンスは次の形式で返ります。

{
  "success": true,
  "data": {
    "domain": "example.com",
    "records": {
      "CAA": [
        { "flags": 0, "tag": "issue", "value": "letsencrypt.org" },
        { "flags": 0, "tag": "issuewild", "value": "letsencrypt.org" },
        { "flags": 0, "tag": "iodef", "value": "mailto:security@example.com" }
      ]
    }
  },
  "error": null,
  "meta": { "responseTime": 35 }
}

records.CAA 配列の各要素に flags、tag、value の 3 フィールドが含まれます。CAA レコードが未設定のドメインでは records.CAA が null になります。

よくある問題

CAA レコードの設定・運用で発生しやすいトラブルと対処法を整理します。

証明書の発行に失敗する

CAA レコードに指定した認証局名が間違っている場合、発行が拒否されます。認証局ごとに CAA で指定するドメイン名が決まっており、たとえば Let’s Encrypt は letsencrypt.org、DigiCert は digicert.com、Google Trust Services は pki.goog です。タイプミス(digicert.co など)があると発行がブロックされます。

Cloudflare のような CDN プラットフォームは複数の認証局を使い分ける場合があります。Cloudflare は Let’s Encrypt、DigiCert、Google Trust Services のいずれかを選択するため、CAA レコードでこれらすべてを許可しておく必要があります。1 つでも欠けていると、プラットフォームがその認証局を選択したときに発行が失敗します。

issuewild を設定していないのにワイルドカード証明書が発行される

issue タグのみ設定して issuewild を設定していない場合、issue の設定がワイルドカード証明書にも適用されます。ワイルドカード証明書の発行を明示的に禁止するには issuewild ";" を追加します。

DNSSEC の検証失敗で SERVFAIL が返る

DNSSEC が有効なドメインで署名に問題があると、CAA クエリが SERVFAIL を返します。RFC 8659 では、認証局は SERVFAIL を受け取った場合に証明書を発行してはならないと規定しています。DNSSEC の設定を見直すか、DNSSEC を正しく無効化する必要があります。

ファイアウォールが CAA クエリをドロップする

CAA のレコードタイプ番号は 257 であり、従来の A(1)や MX(15)と異なるため、一部のファイアウォールやプロキシが未知のレコードタイプとして CAA クエリをドロップすることがあります。認証局からの CAA クエリがタイムアウトすると、多くの認証局は安全側に倒して発行を拒否します。DNS サーバーの前段にあるファイアウォールで、レコードタイプ 257 の通過を許可する必要があります。

サブドメインの CAA レコードが親ドメインと矛盾する

sub.example.com に CAA レコードを設定すると、そのサブドメインでは親の example.com の CAA レコードは参照されません。サブドメイン固有の CAA レコードが完全に優先されます。サブドメインで別の認証局を使いたい場合は有用ですが、設定漏れがあると意図しない認証局に証明書発行を許可してしまう可能性があります。

実際のドメインで確認してみる

登録不要、無料です。ドメイン名を入れるだけで外部からの見え方を確認できます。

無料で試す

関連用語

DNS

DNS レコード

ドメイン名と IP アドレスやサービス情報を紐づける DNS データベースのエントリ。A・MX・TXT など用途別に型が分かれる。

SSL

SSL/TLS 証明書

ウェブサイトの通信を暗号化し、サーバーの身元を証明するデジタル証明書。HTTPS 配信の前提条件。

SSL

証明書チェーン(Certificate Chain)

サーバー証明書からルート認証局までの信頼の連鎖を構成する証明書群。チェーンの不備は SSL エラーの主な原因。

DNS

TXT レコード

DNS ゾーンに任意のテキスト情報を格納するレコードタイプ。SPF・DKIM・DMARC やドメイン所有権の確認に使われる。

DNS

A レコード

ドメイン名を IPv4 アドレスに対応付ける DNS レコード。ウェブサイト公開の最も基本的な設定。

コンテンツ 技術ノート ガイド 用語解説
ツール ツール一覧 API Reference
Labee 日本語トップ Labee LLC
© 2026 Labee LLC . All rights reserved.
ホーム ブログ ガイド 用語集