2026年6月17日
2026年6月17日
CAAレコードの追加手順(Let’s Encrypt・ワイルドカード証明書の書き方と確認方法)
CAA レコードは「このドメインの SSL/TLS 証明書を発行してよい認証局(CA)」を DNS で宣言するレコードです。追加作業そのものは数分で終わりますが、使っている CA を書き漏らすと証明書の自動更新が止まり、サイトに警告が出る原因になります。この記事では、追加前の棚卸し、書式、ワイルドカード証明書の扱い、追加後の確認方法を順に説明します。WordPress サイトで無料 SSL(Let's Encrypt など)を使っている場合も、更新を止めずに CAA を導入できるようになります。
CAAレコードの書式
CAA は「フラグ タグ 値」の3要素で書きます(RFC 8659)。
example.com. 3600 IN CAA 0 issue "letsencrypt.org"
example.com. 3600 IN CAA 0 issuewild "letsencrypt.org"
example.com. 3600 IN CAA 0 iodef "mailto:security@example.com"
- フラグ: 通常は
0 - タグ
issue: 通常の証明書を発行してよい CA - タグ
issuewild: ワイルドカード証明書(*.example.com)を発行してよい CA - タグ
iodef: 規則に反する発行依頼があったときの連絡先。対応するかどうかは CA によって異なる
値に入れるのは各 CA が公開している識別用のドメイン名です。Let's Encrypt なら letsencrypt.org です。ほかの CA の値は、各 CA の公式ドキュメントで「CAA」の項目を確認してください。
追加前に、使っているCAを棚卸しする
CAA を置くと、書かれていない CA は証明書を発行できなくなります。追加前に、そのドメインとサブドメインで現在どの CA を使っているかを洗い出すのが最も大切な作業です。
現在の証明書の発行元を確認する
# サイトの証明書の発行者(Issuer)を表示
openssl s_client -connect example.com:443 -servername example.com </dev/null 2>/dev/null \
| openssl x509 -noout -issuer
ブラウザの鍵マークから証明書の詳細を開いても確認できます。サブドメイン(www、shop、mail など)ごとに別の CA を使っていることもあるので、それぞれ確認します。
見落としやすい発行元
- レンタルサーバーの無料 SSL: 多くは Let's Encrypt ですが、事業者によって異なる場合がある
- CDN が自動で発行する証明書: CDN 側が複数の CA を使い分けることがある。Cloudflare のように、自社の証明書発行に必要な CAA を自動で補う仕組みを持つサービスもあるため、CDN のドキュメントを確認する
- クラウドの証明書サービス(AWS Certificate Manager など)や、メールサーバー・外部サービス用に別途取った証明書
過去に発行された証明書は、Certificate Transparency のログを検索できるサービス(crt.sh など)でドメイン名を入れると一覧できます。棚卸しの漏れを防ぐのに役立ちます。
CAAの適用範囲を理解する
CAA は、証明書を発行する名前から親のドメインへとさかのぼって探され、最初に見つかった CAA の集合が使われます。
www.example.comに CAA が無ければ、example.comの CAA が適用されるshop.example.comにだけ別の CA を許可したいなら、shop.example.comに CAA を置く。その名前ではドメイン直下の CAA は参照されない- 名前が CNAME の場合は、行き先の名前の CAA が関係することがある。CDN を使ったサブドメインで想定外の拒否が起きたときは、CNAME の行き先も確認する
issuewild が無い場合、ワイルドカード証明書には issue の設定が使われます。ワイルドカード証明書を一切発行させたくない場合は、issuewild に ";" を書きます。
example.com. 3600 IN CAA 0 issuewild ";"
管理画面でCAAを追加する手順
作業前に、現在の DNS レコードを管理画面のエクスポートやスクリーンショットで控えておきます。
- DNS の管理画面でレコードの追加を選び、種類に CAA を選ぶ
- 名前(ホスト)は、ドメイン直下なら
@または空欄 - フラグ・タグ・値を入力する。入力欄が分かれている画面と、
0 issue "letsencrypt.org"のように1行で入れる画面がある - 値を引用符で囲むかどうかは画面によって違う。入力例やヘルプの記載に合わせる
- 使っている CA の数だけ
issueを追加する。CA ごとに1レコードずつ作る
入力欄の名前や配置は DNS サービスごとに異なり、更新されることもあります(2026年10月現在)。CAA という種類が選べない古い管理画面では追加できないため、DNS サービスの変更を検討します。
追加後の確認方法
# 公開リゾルバー経由
dig example.com CAA +short
# 権威ネームサーバーに直接問い合わせ
dig example.com NS +short
dig @ns1.example-dns.net example.com CAA +short
0 issue "letsencrypt.org" のように返れば登録できています。続いて、証明書の発行・更新が通るかを確かめます。certbot を使っている VPS なら、本番の証明書を変えずに試せる次のコマンドが便利です。
sudo certbot renew --dry-run
CAA が原因で拒否されると、CA から「CAA レコードが発行を妨げている」という趣旨のエラーが返ります。この場合は、使っている CA が issue(ワイルドカードなら issuewild)に含まれているか、適用される名前が想定どおりかを見直します。
レンタルサーバーの無料 SSL のように自分で更新を試せない環境では、追加後しばらくしてから管理画面の証明書の状態と有効期限を確認し、更新が止まっていないかを見ておきます。
つまずきやすい点
- CAA の問い合わせ自体が DNS エラー(SERVFAIL など)になると、CA は安全側に倒して発行を拒否することがある。権威サーバーが CAA の問い合わせに正常に応答しているかを確認する
- 値の綴り違い(
letsencrypt.comなど)は単に許可が無い扱いになり、発行が止まる - 証明書を別の CA へ乗り換えるときは、先に新しい CA を CAA に追加してから切り替え、古い CA は乗り換え完了後に削除する
Let's Encrypt はさらに、アカウントや検証方法を限定する拡張(RFC 8657 の accounturi や validationmethods)に対応しています。運用が安定してから、必要に応じて検討するとよいでしょう。
まとめ
- CAA は「発行してよい CA」の宣言。追加前に、すべてのサブドメインで使っている CA を棚卸しする
issueは通常の証明書、issuewildはワイルドカード証明書を担当し、名前は親ドメインへさかのぼって探される- 追加後は dig で値を確認し、certbot の
--dry-runや管理画面で証明書の更新が通るかを確かめる - CA を乗り換えるときは、新しい CA を先に追加してから切り替える