2026年7月21日

2026年7月21日

WordPressサイトのドメインにDNSSECを設定する方法|DNS事業者での有効化・DS登録・確認

DNSSEC(DNS Security Extensions)は、DNS の答えに電子署名を付け、受け取った側が「本物のネームサーバーが返した、書き換えられていない答えか」を確かめられるようにする仕組みです。偽の DNS の答えを紛れ込ませて、利用者を偽のサイトに誘導する攻撃(キャッシュポイズニングなど)を防ぐのに役立ちます。

DNSSEC は WordPress の設定ではなく、ドメインの DNS の設定です。この記事では、WordPress サイトのドメインで DNSSEC を有効にする手順と、確認の方法、外すときの注意を説明します。

DNSSECでできること・できないこと

できること できないこと
DNS の答えが改ざんされていないかを、検証するリゾルバーが確かめられる 通信の暗号化(HTTPS の代わりにはならない)
偽の IP アドレスへの誘導を防ぐ DNS の問い合わせ内容を隠す
WordPress 自体の脆弱性やログインの乗っ取りを防ぐ

検証は、利用者側のリゾルバー(Google Public DNS・Cloudflare の 1.1.1.1・多くのプロバイダーの DNS など)が行います。設定に誤りがあると、検証するリゾルバーを使う人からはサイトが見えなくなります(SERVFAIL になる)。そのため、手順どおりに設定し、確認してから運用することが大切です。

設定に関わる2つの場所

DNSSEC の設定は、2か所で行います。

場所 行うこと
DNS 事業者(ネームサーバーを運用しているところ) ゾーンに署名する。署名用の鍵を作り、管理する
レジストラ(ドメインを登録しているところ) DS レコードを親ゾーン(.com や .jp)に登録する

DS レコードは、親ゾーンに置かれる「この鍵が正しい」という印です。DNS 事業者とレジストラが同じ会社の場合は、DS の登録まで自動で行われることもあります。

始める前に、次のことを確かめておきます。

  • ドメインの DNS をどこが運用しているか(dig example.com NS +short で分かります)
  • そのDNS 事業者が DNSSEC の署名に対応しているか
  • レジストラが DS レコードの登録に対応しているか(管理画面に DNSSEC や DS の項目があるか)

今の状態を確かめる

# DS が親ゾーンに登録されているか(何も返らなければ未設定)
dig example.com DS +short

# ゾーンに鍵(DNSKEY)があるか
dig example.com DNSKEY +short

example.com は自分のドメインに置き換えます。どちらも何も返らなければ、DNSSEC は使っていない状態です。

例1:Cloudflareで有効にする

Cloudflare の DNS を使っている場合の手順です(2026年10月時点の Cloudflare のドキュメントに基づきます)。

  1. Cloudflare のダッシュボードで対象のドメインを開き、DNS の「Settings」画面を開きます
  2. 「DNSSEC」の欄で「Enable DNSSEC」をクリックします
  3. 表示された DS レコードの値(キータグ、アルゴリズム、ダイジェストの種類、ダイジェスト)を控えます。画面を閉じた後も、DNSSEC の欄の「DS record」から見直せます
  4. レジストラの管理画面で、DS レコードを登録します。アルゴリズムは 13(ECDSA Curve P-256 with SHA-256)を選べる場合はそれを選びます

ドメインを Cloudflare Registrar で登録している場合は、DS の登録は Cloudflare が自動で行います(反映まで1〜2日かかることがあります)。

例2:ほかのDNS事業者で有効にする

多くの DNS 事業者・レンタルサーバーでも、流れは同じです。

  1. DNS 事業者の管理画面で、ドメインの DNSSEC(署名)を有効にする
  2. 表示される DS レコードの情報(キータグ・アルゴリズム・ダイジェストの種類・ダイジェスト)を控える
  3. レジストラの管理画面で DS レコードを登録する(DNS 事業者とレジストラが同じなら、自動で登録される場合がある)

管理画面の項目名は事業者ごとに違います。各社のヘルプで「DNSSEC」の手順を確認してください。

例3:自分のBINDで署名する

自分のサーバーの BIND で権威 DNS を運用している場合は、dnssec-policy を使うと、鍵の作成・署名・署名の更新を BIND が自動で行います。古い記事にある dnssec-keygen と dnssec-signzone を手で実行する方法は、署名の期限切れを起こしやすいため、今は使う必要がありません。

ゾーンの設定に2行を加えます(Debian・Ubuntu では /etc/bind/named.conf.local)。

zone "example.com" {
    type primary;
    file "/var/lib/bind/db.example.com";
    dnssec-policy default;
    inline-signing yes;
};
  • dnssec-policy default;:BIND の標準の方針(ECDSAP256SHA256 の鍵1つで署名)を使います
  • inline-signing yes;:元のゾーンファイルはそのままにして、署名した版を BIND が別に作ります
  • ゾーンファイルは、BIND が書き込める場所(Debian・Ubuntu では /var/lib/bind)に置きます

設定を確かめて読み込み、署名の状態を見ます。

sudo named-checkconf -z
sudo rndc reconfig
sudo rndc dnssec -status example.com

鍵ができると、key: 44 (ECDSAP256SHA256), CSK のような行が表示されます(44 はキータグで、鍵ごとに違います)。鍵のファイルは、Debian・Ubuntu では /var/cache/bind に作られます。

親ゾーンに登録する DS レコードは、公開されている DNSKEY から作れます。

dig @127.0.0.1 example.com DNSKEY +noall +answer | dnssec-dsfromkey -2 -f - example.com

example.com. IN DS 44 13 2 37D08D... のような行が出ます。左から、キータグ(44)、アルゴリズム(13)、ダイジェストの種類(2 = SHA-256)、ダイジェストです。これをレジストラの管理画面で登録します。

レジストラへの登録が済み、dig example.com DS +short で親ゾーンに DS が出たことを確かめたら、BIND に DS が公開されたことを伝えます。

sudo rndc dnssec -checkds published example.com

この手順は、Debian 13 の BIND 9.20 で、署名と DS の生成ができることを確認しています。

設定できたか確かめる

DS の登録が親ゾーンに反映されるまで、数時間から1日程度かかることがあります。反映後に次のコマンドで確かめます。

# 親ゾーンに DS がある
dig example.com DS +short

# 検証するリゾルバーで、答えに ad(検証済み)の印が付く
dig @1.1.1.1 example.com A +dnssec

2つ目のコマンドの結果で、flags: の行に ad が含まれていれば、検証に成功しています。

BIND 9 に付属する delv でも確かめられます。

delv example.com A

; fully validated と表示されれば、検証に成功しています。

ブラウザーで確かめる場合は、DNSViz にドメインを入力すると、親ゾーンからの署名のつながりが図で表示され、誤りがあれば赤く示されます。

最後に、WordPress サイトがブラウザーで普段どおり表示されること、サイトから送るメールが届くことを確かめます。

DNSSECを使うときの注意

  • ネームサーバーを変える前に DS を外す:DNS 事業者を変更すると、新しい事業者の鍵は古い DS と合いません。先にレジストラで DS を削除し、DS の TTL(dig example.com DS の結果の2番目の数字)が過ぎてからネームサーバーを切り替えます。順番を誤ると、検証するリゾルバーで SERVFAIL になり、サイトもメールも届かなくなります。新しい事業者で署名を有効にしたら、改めて DS を登録します
  • DNSSEC をやめるときも DS から外す:レジストラで DS を削除し、TTL が過ぎてから DNS 事業者で署名を無効にします
  • DS を更新するのは鍵を替えたときだけ:A レコードや MX レコードを変えても、DS を登録し直す必要はありません。DS の更新が必要なのは、鍵(KSK・CSK)を交換したときです。Cloudflare や BIND の dnssec-policy のように事業者・ソフトが鍵を管理している場合は、その指示に従います
  • 定期的に外から確かめる:dig @1.1.1.1 example.com A +dnssec で ad が付くことを、監視の項目に入れておくと、署名の期限切れなどに早く気付けます

まとめ

  • DNSSEC は DNS の答えの改ざんを防ぐ仕組みで、WordPress ではなくドメインの DNS で設定する
  • DNS 事業者で署名を有効にし、表示された DS をレジストラで登録する
  • dig @1.1.1.1 example.com A +dnssec の ad、delv の fully validated、DNSViz で確かめる
  • ネームサーバーの変更や DNSSEC の停止は、先に DS を外して TTL が過ぎてから行う

関連記事:

お気軽にご相談ください

お見積りへ お問い合わせへ
▲