ISC DLVからDS方式の移行
JPRSがJPドメイン名サービスにDNSSECを導入したことに伴いISC DLVからJPRS上のDS方式に移行したので、そのメモでもと。尚、他の関連ネタ同様、ここなんかに書いている
まず、新しいKSKを作ります。ISC DLVで使っていたものをそのまま移行でもよいのでしょうけど、折角だしこの機会に切り替えた方がよいかと思いまして。使用期間もわかりやすいかと思いますし。まあ、ゴタクは兎も角、新しいKSK作ります。
KSKのロールオーバー方式ですが、こことかここに2重署名方式(Double Signature)とありますので、それに準じてみたいと思います。とはいうものの、そもそも登録しているところが違うので意味合いが変わって来ている感はありますが、まあ、似たような感じでやったと思って頂ければ。まず、publishedになってからactiveにするまでの時間ですが、DNSKEYのTTLとゾーン転送にかかる時間と誤差程度の作業時間(例えば、鍵作ってから実際に公開するまでの時間とか)ぐらいみればいいわけですが、TTLはまあ一般的には1日ぐらいだと思いますし、ゾーン転送は最近は
で、これで、鍵が出来ているはずなので、
とします。で、作成した
レジストラにもよるのでしょうけど、利用中の名づけてねっとでは鍵ID以降、つまり、
をフォームに貼り付ける方式でした。まあ、このあたりは利用中のレジストラのやり方に従えばよいだけかと思います。
親のゾーン(この場合はjp)にDS RRが登録されるのを待ちます。jp.のNS RRは、
なんぞで得られると思いますし、それらに
等とすれば確認はできるかと思います。確認できたら、ISC DLVからDLV RRを消します。Zone Actionsの(delete)をぽちっとするだけです。ここで、また、DLV RRのTTLとゾーン転送にかかる時間程度を待つことになりますが、TTLが3600、Refreshが7200のようなので、3, 4時間程度待てばよいでしょう。その後、古いKSKがKexample.jp.+008+12199だったとしますと、
とします。その後、
とすればゾーンから古いKSKは消えてくれます。(*1)。
*1: 別に
auto-dnssec maintain;
が前提になっています。auto-dnssec maintain;
についてはBIND97付属のARMの他、これなんかも参考になりそうです。まず、新しいKSKを作ります。ISC DLVで使っていたものをそのまま移行でもよいのでしょうけど、折角だしこの機会に切り替えた方がよいかと思いまして。使用期間もわかりやすいかと思いますし。まあ、ゴタクは兎も角、新しいKSK作ります。
$ su -
# su - named --shell=/bin/bash
$ /usr/sbin/dnssec-keygen -f KSK -r /dev/urandom -3 -a \
RSASHA256 -b 2048 -P now -A now+30h -I now+13mo -D now+13mo \
-K /var/named/chroot/var/named/keys/example.jp \
-n ZONE example.jp
Generating key pair...
Kexample.jp.+008+02746
KSKのロールオーバー方式ですが、こことかここに2重署名方式(Double Signature)とありますので、それに準じてみたいと思います。とはいうものの、そもそも登録しているところが違うので意味合いが変わって来ている感はありますが、まあ、似たような感じでやったと思って頂ければ。まず、publishedになってからactiveにするまでの時間ですが、DNSKEYのTTLとゾーン転送にかかる時間と誤差程度の作業時間(例えば、鍵作ってから実際に公開するまでの時間とか)ぐらいみればいいわけですが、TTLはまあ一般的には1日ぐらいだと思いますし、ゾーン転送は最近は
NOTIFY
とかあるのでそんなに掛からないとは思えども、普通に転送する場合とか失敗する場合とかも考えて多めに見積もって6時間ぐらいみておけばいいかなということで30時間としています。retiredとdeletedはどうせ更新時に明示的に行うことなので、ちょっと長めに適当です。で、これで、鍵が出来ているはずなので、
$ rndc loadkeys example.jp.
とします。で、作成した
Kexample.jp.+008+02746
でDNSKEYの署名が開始されるまで待ちます。要するに30時間後です。署名が開始されたらDSを申請します。dnssec-dsfromkey(8)
を使ってDS RRを得ます。$ /usr/sbin/dnssec-dsfromkey \
/var/named/chroot/var/named/keys/example.jp/Kexample.jp.+008+02746.key
example.jp. IN DS 2746 8 1 1D8F72D56BEA0EABA6E6BCAC2093906135C9457B
example.jp. IN DS 2746 8 2 C6884BFF053E0F63B00153411AD3873DCD9462CBDD1261707CA83F2B 762319F7
レジストラにもよるのでしょうけど、利用中の名づけてねっとでは鍵ID以降、つまり、
2746 8 1 1D8F72D56BEA0EABA6E6BCAC2093906135C9457B
2746 8 2 C6884BFF053E0F63B00153411AD3873DCD9462CBDD1261707CA83F2B 762319F7
をフォームに貼り付ける方式でした。まあ、このあたりは利用中のレジストラのやり方に従えばよいだけかと思います。
親のゾーン(この場合はjp)にDS RRが登録されるのを待ちます。jp.のNS RRは、
$ dig jp. ns
なんぞで得られると思いますし、それらに
$ dig +norec @a.dns.jp example.jp. ds
等とすれば確認はできるかと思います。確認できたら、ISC DLVからDLV RRを消します。Zone Actionsの(delete)をぽちっとするだけです。ここで、また、DLV RRのTTLとゾーン転送にかかる時間程度を待つことになりますが、TTLが3600、Refreshが7200のようなので、3, 4時間程度待てばよいでしょう。その後、古いKSKがKexample.jp.+008+12199だったとしますと、
dnssec-settime(8)
使って、$ /usr/sbin/dnssec-settime -I now \
/var/named/chroot/var/named/keys/example.jp/Kexample.jp.+008+12199
$ rndc loadkeys example.jp.
とします。その後、
$ /usr/sbin/dnssec-settime -D now \
/var/named/chroot/var/named/keys/example.jp/Kexample.jp.+008+12199
$ rndc loadkeys example.jp.
とすればゾーンから古いKSKは消えてくれます。(*1)。
*1: 別に
-I
と-D
を一気にやってしまってもいいのですが、なんとなくかわいそうな気がするものでw
あんまり居ないとは思うんですが、ARM読んでたりすると、キャッシュDNSで、
managed-keys {
. initial-key 257 3 8 "...";
};
trusted-keys {
example.jp. 257 3 8 "...";
};
みたいな trusted-keys を書いている場合があるかと思うんですが、これも更新忘れないように。
DS申請するタイミングで足して、ISC DLVからDLV消すタイミングで古いのを消してやればよいです。
by *生保単独* (2011-01-21 01:51)