$Id: dnssec-child-howto.html,v 1.9 2002/08/30 19:15:48 jakob Exp $
This text was produced at the DNSSEC/DS workshop hosted by USC/ISI. The workshop took place at USC/ISI East in Washington DC, US, between August 28-30, 2002.
Participants and authors:
Rob Austein, Matt Larson, Ólafur
Guðmunsson, Sam Weiler, Russ Mundy, Brian Wellington, Daniel
Massey, David Blacka, Ed Lewis, Jakob Schlyter, Johan Ihrén, Mark
Kosters, Olaf Kolkman, Randy Bush, Roy Arends, Allison Mankin, Scott
Rose and Wesley Griffin.
This document only covers use with ISC's BIND 9 software. If anyone can help with examples using other products that use the same standards, we would be delighted to include them. Send text <tm>.
XXX please provide text XXX
We recommend that one key be used for signing the zone itself and we call this key the zone signing key or ZSK. Another key, which we call key signing key or KSK, is used for signing the zone signing key. With this setup, you can store the KSK offline while keeping the ZSK online for signing dynamic updates. This setup also gives you the possibility of changing ZSK without involving the parent.
Get and build a DS-aware nameserver, e.g. BIND 9.3.x or later
Synchronize your clock using NTP
Generate a KSK and a ZSK
Include ($INCLUDE) the keys in your zone
Sign the zone
Switch to the signed zone file, e.g. replace my.domain.name in named.conf with my.domain.name.signed
(Re-)start the new nameserver
Test
Notify your parent
The dnssec-signzone program is used to sign a zone file. To sign the zone you need to specify the zone file, zero or more key signing keys and the zone signing keys.
$ dnssec-signzone \
-o <zone name> \
-k <key signing key> \
<zone filename> \
<zone signing keys>
Example:
$ dnssec-signzone \
-o my.zone.name \
-k Kmy.zone.name.+005+54098.private \
my.zone.name.zonefile \
Kmy.zone.name.+005+56712.private
The dnssec-keygen program is used to generate a new key. Multiple algorithms and key lengths are available, but we currently recommend that you use a 1024-bit RSA/SHA-1 key.
$ dnssec-keygen -a RSASHA1 -b 1024 -n ZONE <zone name>
Generate a new key and add it to the zone
Increment the SOA of zone
Sign your zone using both the old and the new key
Reload the zone
Notify the parent about the new key and remove the old key. Make sure the change as the parent has taken effect before continuing. You can check what DS-records are published by the parent using:
$ dig @parent.name.server my.zone.name ds +norec
Wait for 2x(the time of the TTL of the DS at the parent)
Remove the old key from your own zone, increment SOA, resign and reload.
Generate a new key and add it to the zone
Remove the old key from the zone
Increment the SOA of zone
Sign you zone
Reload the zone
The clocks in the participating computers must be in sync, especially for signature verification. Use of NTP is strongly recommended.