いつの間にか Tucows が gTLD の DNSSEC に対応していたので、
手元の実験用ドメインで導入してみました。
まずは鍵リポジトリを作ります。
$ cd /usr/local/etc/namedb $ sudo mkdir keys
KSK のロールオーバーは来年考えることにしてとりあえず作成。
末尾のはドメイン名を書きます。
$ sudo dnssec-keygen -K keys -a RSASHA256 -b 2048 -f ksk hslab.net Generating key pair..............................................+++ ............+++ Khslab.net.+008+07519
とりあえずしばらくは毎週日曜 0:00 に ZSK を作成して、毎日 0:10 に再署名をかける予定。
日曜 0:10 時点で inactive になる ZSK と、
まずは stand-by して日曜 0:10 時点から active、次の日曜 0:10 時点で inactive になる ZSK を作ります。
$ sudo dnssec-keygen -K keys -a RSASHA256 -b 1024 -P now -A now -I +1D -D +2D hslab.net Generating key pair..............++++++ .......++++++ Khslab.net.+008+27564 $ sudo dnssec-keygen -K keys -a RSASHA256 -b 1024 -P now -A +1D -I +8D -D +9D hslab.net Generating key pair....................++++++ ............++++++ Khslab.net.+008+45060
鍵のメタ情報はこんな感じになりました。
$ cat *.key ; This is a key-signing key, keyid 7519, for hslab.net. ; Created: 20160701145659 (Fri Jul 1 23:56:59 2016) ; Publish: 20160701145659 (Fri Jul 1 23:56:59 2016) ; Activate: 20160701145659 (Fri Jul 1 23:56:59 2016) hslab.net. IN DNSKEY 257 3 8 AwEAAawAAeGJm5ZnlpiAEXwaEjOIP0f1Qp9X/n... ; This is a zone-signing key, keyid 27564, for hslab.net. ; Created: 20160701145754 (Fri Jul 1 23:57:54 2016) ; Publish: 20160701145754 (Fri Jul 1 23:57:54 2016) ; Activate: 20160701145754 (Fri Jul 1 23:57:54 2016) ; Inactive: 20160702145754 (Sat Jul 2 23:57:54 2016) ; Delete: 20160703145754 (Sun Jul 3 23:57:54 2016) hslab.net. IN DNSKEY 256 3 8 AwEAAcvl4fz19BK6ZcRq5v+bfIVsfuZU8UHyZhN... ; This is a zone-signing key, keyid 45060, for hslab.net. ; Created: 20160701145807 (Fri Jul 1 23:58:07 2016) ; Publish: 20160701145807 (Fri Jul 1 23:58:07 2016) ; Activate: 20160702145807 (Sat Jul 2 23:58:07 2016) ; Inactive: 20160709145807 (Sat Jul 9 23:58:07 2016) ; Delete: 20160710145807 (Sun Jul 10 23:58:07 2016) hslab.net. IN DNSKEY 256 3 8 AwEAAa+hnTG6ycprahnq+vszIQ9cCW1Z8ix8M4qH...
んでっ、ゾーンファイルに署名。
うちのゾーンファイルには ORIGIN が書いてなかったので、-o オプションで ORIGIN を指定します。←ここでハマった...
末尾はゾーンファイルのファイル名。
$ sudo dnssec-signzone -K keys -N unixtime -o hslab.net -S master/hslab.net.zone Fetching KSK 7519/RSASHA256 from key repository. Fetching ZSK 27564/RSASHA256 from key repository. Fetching ZSK 45060/RSASHA256 from key repository. Verifying the zone using the following algorithms: RSASHA256. Zone fully signed: Algorithm: RSASHA256: KSKs: 1 active, 0 stand-by, 0 revoked ZSKs: 1 active, 1 stand-by, 0 revoked master/hslab.net.zone.signed
KSK は 1 個。ZSK はスタンバイが 1 個にアクティブが 1 個。予定通り。
後はレジストラに登録する DS レコードを作ります。
$ sudo dnssec-dsfromkey keys/Khslab.net.+008+07519.key hslab.net. IN DS 7519 8 1 A07EC45282B9AD8A78126BD5827254EEBD4EF900 hslab.net. IN DS 7519 8 2 A2CB2855132604B7493BD1A2A9B4DD115AA4AF62DAD9D85703C75303A25682D9
この 2 レコードを Tucows のマネージメントページからポチポチと入力すればOK。
$ cat genkey.sh #!/bin/sh cd /usr/local/etc/namedb /usr/local/sbin/dnssec-keygen -K keys -a RSASHA256 -b 1024 -P now -A +7D -I +14D -D +15D hslab.net $ cat sign.sh #!/bin/sh cd /usr/local/etc/namedb /usr/local/sbin/dnssec-signzone -K keys -N unixtime -o hslab.net -S master/external/hslab.net.zone /usr/local/sbin/rndc reload
sign.sh はさっきと同じコマンド。genkey.sh は日付だけ調整してほぼ同じコマンド。
これを /etc/crontab に登録。
$ tail -n 2 /etc/crontab 0 0 * * 0 root /root/genkey.sh 10 0 * * * root /root/sign.sh
この辺を参考にしました。
https://www.nic.ad.jp/ja/materials/iw/2010/proceedings/s10/iw2010-s10-01.pdf
https://jprs.jp/dnssec/doc/smart-sign.pdf
http://dnssec.jp/wp-content/uploads/2011/08/20110420-dnssec-rollover_key-nakashima.pdf