No empty .Rs/.Re
[netbsd-mini2440.git] / external / bsd / bind / dist / README.dnssec
bloba3eda796fbdc64ce033a903492b3c8812c635007
2                         DNSSEC and Dynamic Zones
4 As of BIND 9.7.0 it is possible to change a dynamic zone from
5 insecure to secure and back again.  A secure zone can use either
6 NSEC or NSEC3 chains.
8                 Converting from insecure to secure
10 Changing a zone from insecure to secure can be done in two ways:
11 using a dynamic DNS update, or the "auto-dnssec" zone option.
13 For either method, you need to configure named so that it can see
14 the K* files which contain the public and private parts of the keys
15 that will be used to sign the zone.  These files will have been
16 generated by dnssec-keygen.  You can do this by placing them in
17 the key-directory, as specified in named.conf:
19         zone example.net {
20                 type master;
21                 update-policy local;
22                 file "dynamic/example.net/example.net";
23                 key-directory "dynamic/example.net";
24         };
26 If one KSK and one ZSK DNSKEY key have been generated, this configuration
27 will cause all records in the zone to be signed with the ZSK, and the
28 DNSKEY RRset to be signed with the KSK as well.  An NSEC chain will be
29 generated as part of the initial signing process.
31                 Dynamic DNS update method
33 To insert the keys via dynamic update:
35         % nsupdate
36         > ttl 3600
37         > update add example.net DNSKEY 256 3 7 AwEAAZn17pUF0KpbPA2c7Gz76Vb18v0teKT3EyAGfBfL8eQ8al35zz3Y I1m/SAQBxIqMfLtIwqWPdgthsu36azGQAX8=
38         > update add example.net DNSKEY 257 3 7 AwEAAd/7odU/64o2LGsifbLtQmtO8dFDtTAZXSX2+X3e/UNlq9IHq3Y0 XtC0Iuawl/qkaKVxXe2lo8Ct+dM6UehyCqk=
39         > send
41 While the update request will complete almost immediately, the zone
42 will not be completely signed until named has had time to walk the
43 zone and generate the NSEC and RRSIG records.  The NSEC record at the
44 apex will be added last, to signal that there is a complete NSEC chain.
46 If you wish to sign using NSEC3 instead of NSEC, you should add an
47 NSEC3PARAM record to the initial update request.  If you wish the
48 NSEC3 chain to have the OPTOUT bit set, set it in the flags field
49 of the NSEC3PARAM record.
51         % nsupdate
52         > ttl 3600
53         > update add example.net DNSKEY 256 3 7 AwEAAZn17pUF0KpbPA2c7Gz76Vb18v0teKT3EyAGfBfL8eQ8al35zz3Y I1m/SAQBxIqMfLtIwqWPdgthsu36azGQAX8=
54         > update add example.net DNSKEY 257 3 7 AwEAAd/7odU/64o2LGsifbLtQmtO8dFDtTAZXSX2+X3e/UNlq9IHq3Y0 XtC0Iuawl/qkaKVxXe2lo8Ct+dM6UehyCqk=
55         > update add example.net NSEC3PARAM 1 1 100 1234567890
56         > send
58 Again, this update request will complete almost immediately; however,
59 the record won't show up until named has had a chance to build/remove
60 the relevant chain.  A private type record will be created to record
61 the state of the operation (see below for more details), and will be
62 removed once the operation completes.
64 While the initial signing and NSEC/NSEC3 chain generation is happening,
65 other updates are possible as well.
67                 Fully automatic zone signing
69 To enable automatic signing, add the "auto-dnssec" option to the zone
70 statement in named.conf.  "auto-dnssec" has two possible arguments:
71 "allow" or "maintain".
73 With "auto-dnssec allow", named can search the key directory for keys
74 matching the zone, insert them into the zone, and use them to sign the
75 zone.  It will do so only when it receives an "rndc sign <zonename>"
76 command.
78 "auto-dnssec maintain" includes the above functionality, but will also
79 automatically adjust the zone's DNSKEY records on schedule according to the
80 keys' timing metadata (see the man pages for dnssec-keygen and
81 dnssec-settime for more information).  If keys are present in the key
82 directory the first time the zone is loaded, it will be signed
83 immediately, without waiting for an "rndc sign" command.  (This
84 command can still be used for unscheduled key changes, however.)
86 Using the "auto-dnssec" option requires the zone to be configured to
87 allow dynamic updates, by adding an "allow-update" or "update-policy"
88 statement to the zone configuration.  If this has not been done, the
89 configuration will fail.
91                 Private-type records
93 The state of the signing process is signaled by private-type records
94 (with a default type value of 65534).  When signing is complete, these
95 records will have a nonzero value for the final octet (for those records
96 which have a nonzero initial octet).
98 The private type record format:
99 If the first octet is non-zero then the record indicates that the zone needs
100 to be signed with the key matching the record, or that all signatures that
101 match the record should be removed.
103         algorithm (octet 1)
104         key id in network order (octet 2 and 3)
105         removal flag (octet 4)
106         complete flag (octet 5)
108 Only records flagged as "complete" can be removed via dynamic update.
109 Attempts to remove other private type records will be silently ignored.
111 If the first octet is zero (this is a reserved algorithm number
112 that should never appear in a DNSKEY record) then the record indicates
113 changes to the NSEC3 chains are in progress.  The rest of the record
114 contains an NSEC3PARAM record.  The flag field tells what operation
115 to perform based on the flag bits.
117         0x01 OPTOUT
118         0x80 CREATE
119         0x40 REMOVE
120         0x20 NONSEC
122                 DNSKEY rollovers via UPDATE
124 It is possible to perform key rollovers via dynamic update.  You need
125 to add the K* files for the new keys so that named can find them.  You
126 can then add the new DNSKEY RRs via dynamic update.  Named will then cause
127 the zone to be signed with the new keys.  When the signing is
128 complete the private type records will be updated so that the last
129 octet is non zero.
131 If this is for a KSK you need to inform the parent and any trust
132 anchor repositories of the new KSK.
134 You should then wait for the maximum TTL in the zone before removing the
135 old DNSKEY.  If it is a KSK that is being updated, you also need to wait
136 for the DS RRset in the parent to be updated and its TTL to expire.
137 This ensures that all clients will be able to verify at least one
138 signature when you remove the old DNSKEY.
140 The old DNSKEY can be removed via UPDATE.  Take care to specify
141 the correct key.  Named will clean out any signatures generated by
142 the old key after the update completes.
144                 NSEC3PARAM rollovers via UPDATE
146 Add the new NSEC3PARAM record via dynamic update.  When the new NSEC3 chain
147 has been generated, the NSEC3PARAM flag field will be zero.  At this
148 point you can remove the old NSEC3PARAM record.  The old chain will
149 be removed after the update request completes.
151                 Converting from NSEC to NSEC3
153 To do this, you just need to add an NSEC3PARAM record.  When the
154 conversion is complete, the NSEC chain will have been removed and
155 the NSEC3PARAM record will have a zero flag field.  The NSEC3 chain
156 will be generated before the NSEC chain is destroyed.
158                 Converting from NSEC3 to NSEC
160 To do this, remove all NSEC3PARAM records with a zero flag field.  The
161 NSEC chain will be generated before the NSEC3 chain is removed.
163                 Converting from secure to insecure
165 To do this, remove all the DNSKEY records.  Any NSEC or NSEC3 chains
166 will be removed as well, along with associated NSEC3PARAM records.
167 This will take place after the update request completes.  This
168 requires the "dnssec-secure-to-insecure" option to be set to "yes"
169 in named.conf.
171                 Periodic re-signing
173 In any secure zone which supports dynamic updates, named will
174 periodically re-sign RRsets which have not been re-signed as
175 a result of some update action.  The signature lifetimes will
176 be adjusted so as to spread the re-sign load over time rather than
177 all at once.
179                 NSEC3 and OPTOUT
181 Named only supports creating new NSEC3 chains where all the NSEC3
182 records in the zone have the same OPTOUT state.  Named supports
183 UPDATES to zones where the NSEC3 records in the chain have mixed
184 OPTOUT state.  Named does not support changing the OPTOUT state of
185 an individual NSEC3 record, the entire chain needs to be changed if
186 the OPTOUT state of an individual NSEC3 needs to be changed.