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 のドキュメントに基づきます)。
- Cloudflare のダッシュボードで対象のドメインを開き、DNS の「Settings」画面を開きます
- 「DNSSEC」の欄で「Enable DNSSEC」をクリックします
- 表示された DS レコードの値(キータグ、アルゴリズム、ダイジェストの種類、ダイジェスト)を控えます。画面を閉じた後も、DNSSEC の欄の「DS record」から見直せます
- レジストラの管理画面で、DS レコードを登録します。アルゴリズムは 13(ECDSA Curve P-256 with SHA-256)を選べる場合はそれを選びます
ドメインを Cloudflare Registrar で登録している場合は、DS の登録は Cloudflare が自動で行います(反映まで1〜2日かかることがあります)。
例2:ほかのDNS事業者で有効にする
多くの DNS 事業者・レンタルサーバーでも、流れは同じです。
- DNS 事業者の管理画面で、ドメインの DNSSEC(署名)を有効にする
- 表示される DS レコードの情報(キータグ・アルゴリズム・ダイジェストの種類・ダイジェスト)を控える
- レジストラの管理画面で 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 が過ぎてから行う
関連記事: