BIND も進化していて、 以前設定したときよりも格段に簡単になった。 ZSK や KSK を手で生成する必要は無くなっている。
既に auto-dnssec で DNSSEC を運用している場合、 そのまま設定を変更してしまうとすぐに古いキーがすべて無効になって新しいキーが生成されてしまい、 DS レコードを変更するまで名前解決ができなくなってしまう。 (i.e. 単純に auto-dnssec: maintain; を dnssec-policy: default; に書き換えてしまうとハマるということ)
それを避けるため、 レジストラに依頼して DS レコードを削除してもらい、 いったん DNSSEC をやめておく。
まず、options セクションに key-directory を追加する。 このディレクトリは bind の持ち物にしておく。
options {
directory "/usr/local/etc/namedb/working";
key-directory "/usr/local/etc/namedb/keys";
pid-file "/var/run/named/pid";
dump-file "/var/dump/named_dump.db";
statistics-file "/var/stats/named.stats";
allow-query {
localhost;
localnets;
};
allow-transfer {
none;
};
dnssec-validation auto;
dnssec-lookaside auto;
};
次に、DNSSEC を有効にするゾーンに dnssec-policy と inline-signing を追加する。
zone "example.jp" {
type master;
file "/usr/local/etc/namedb/master/example.jp.db";
allow-query {
any;
};
allow-transfer {
10.0.0.2; // secondary
};
dnssec-policy: default;
inline-signing: yes;
};
inline-signing: yes の場合、named(8) はゾーンファイルと同じ場所にいくつかのファイルを作るので、そのディレクトリに bind で書き込めるようにしておく。
# cd /usr/local/etc/namedb # mkdir keys master # chown bind keys master
rndc reload 等して変更を反映させると、新しいキーが生成される。 Kexample.jp.+013+nnnnn.key のような名前のファイルが出来るので、dnssec-dsfromkey(1) で DS レコードを生成する。
# dnssec-dsfromkey /usr/local/etc/namedb/keys/Kexample.jp.+013+02268.key example.jp. IN DS 2268 13 2 3FC9EBC2892630837CA698247B7CC15C5ABF26045106FCE4715DB9357A8DFC69
上流に登録するのは DS よりも後の部分。 レジストラに依頼して、whois の [Signing Key] (汎用 JP ドメイン)や s. [署名鍵](属性型 JP ドメイン)のところにこれらが表示されるようになれば完了。
キーの状態は rndc(8) コマンドで確認できる。
# rndc dnssec -status example.jp dnssec-policy: default current time: Sun Apr 9 17:47:34 2023 key: 2268 (ECDSAP256SHA256), CSK published: yes - since Thu Dec 31 17:31:34 2022 key signing: yes - since Thu Dec 31 17:31:34 2022 zone signing: yes - since Thu Dec 31 17:31:34 2022 No rollover scheduled - goal: omnipresent - dnskey: omnipresent - ds: rumoured - zone rrsig: omnipresent - key rrsig: omnipresent
DS レコードが引けるようになってしばらく経っても ds: のところが rumoured のままになっている場合は、参考サイト[1] にあるとおり
# rndc dnssec -checkds published example.jp
を実行しておく。
[1] DNSSEC Key and Signing Policy
[2] DNSSEC Analyzer