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