1 zkt 0.99c -- 1. Aug 2009
3 * misc dnssec-signer command line option vars changed to storage
6 * port setenv() replaced by putenv() in misc.c
8 * misc Install binaries in prefix/bin instead of $HOME/bin.
9 Fixing some spelling errors in dnssec-signzone.8 and
11 Thanks to Mans Nilsson.
13 * port timegm() check added to configure.ac
15 * misc configure.ac, Makefile.in, and doc is now part of distribution
17 * bug off by one error fixed in splitpath()
19 * misc is_dotfile() renamed to is_dotfilename() (misc.c)
21 * misc inc_soaserial() sourced out to soaserial.c
23 * misc reload() functions sourced out to nscomm.c
25 * bug Introducing parameter "KeyAlgorithm" for both ZSK and
26 KSK keys instead of separate KSK and ZSK algorithms.
27 New functions dki_algo() and dki_findalgo().
29 * bug Redirect stderr message (additionally to stdout) of
30 dnssec-signzone command to pipe.
31 Pick up last line of output for logging.
33 * misc "Sig_GenerateDS" is no longer a hidden parameter.
35 * misc "make clean" now remove the binary files
36 New target "distclean" added to Makefile
38 * bug Wrong typecast in zconf.c parsing CONF_TIMEINT (Thanks to Frederick
39 Soderblum and Peter Norin for the patch)
40 Changed all TIMEINT parameter values to long.
42 * bug If someone changes the zone.db file in dynamic mode, this will be treated
43 the same way as an initial setup, so the zone.db file will be used as new
44 input file (Thanks to Shane Wegner for this patch)
46 * bug Option nsec3_param added to dnssec-signzone command for dynamic zones.
48 * func New option "NamedChrootDir" added to dnssec.conf to specify the
49 directory of a chrooted named. Without such an option
50 "dnssec-signer -N named.conf" couldn't find the zone file directory.
52 * misc Default ZSK lifetime set to 12 weeks instead of 3 months (30days) to
53 suppress the warning message about ZSK keysize of 512 bits.
55 zkt 0.98 -- 28. Dec 2008
57 * misc Target "install-man" added to Makefile
58 man files moved to sub directory "man"
60 * func If a BIND version greater equal 9.6.0 is used, option -d doesn't
61 initiate a resigning of a zone. It's just for key rollover.
63 * func New pseudo algorithms for NSEC3 DNSKEYS added.
64 Support of NSEC3 hashing if a BIND version greater equal 9.6.0
65 is used. New parameter "SaltBits" added to the config file to
66 set the salt length in bits (default is 24 which means 6 hex nibbles).
67 The number of hash iterations is set to the default value of
68 dnssec-signzone which depends on key size.
70 * misc Renaming of all example zone directories so that the directory
71 name does not end with a dot (Necessary for installing the
72 source tree in an MS-Windows environment).
73 str_tolowerdup() renamed to domain_canonicdup() and code added
74 to append a dot to the domain name if it's not already there.
76 * misc Add 'sec' (second) qualifier to debug output in kskrollover().
78 * bug Remove a trailing '/' at the -D argument.
80 * misc Configure script now uses the BIND_UTIL_PATH out of config_zkt.h
81 if the BIND dnssec-signzone command is not found
83 * bug A zone with only a standby key signing key (which means w/o an
84 active ksk) aborts the dnssec-signer command.
87 * func Changed inc_serial() so that the SOA record parser accepts a label
88 other than '@' and an optional ttl value before the class and SOA
89 RR identifier (Both are case insensitive). Thanks to Shane Kerr
92 * bug Change of global configured key liftetime during a zone signing
93 key rollover results in unnecessary additional pre-published
94 zone signing keys (Thanks to Frank Behrens for the patch)
96 * misc Sig_Random config file parameter defaults now to false
98 * bug The man page refers the wrong licence (GPL instead of BSD)
100 zkt 0.97 -- 5. Aug 2008
102 * bug LG_* logging level wasn't mapped to syslog level in lg_mesg().
103 gettock() in ncparse.c did not recognize C single line comments "//"
104 (Thanks to Frank Behrens for finding this out)
106 * misc dist_and_reload () now calls the "Distribute_Cmd" twice:
107 First with argument "distribute" for signed zone file distribution,
108 second with argument "reload" to initiate a reload.
109 Again see example/flat/dist.sh for an example script.
111 * bug full KSK rollover will (mostly) also work for dynamic zones
112 This is a hack and requires further investigation. Currently
113 it will not work if someone is using non standard zone file
116 * misc default ZSK lifetime set to 3 month
118 * misc get_mtime() renamed to file_mtime()
120 * func is_exec_ok() added and called in dist_and_reload ()
122 * func New parameter "Distribute_Cmd" added for specifing a user
123 defined distribution (and reload) command (See example/flat/dist.sh).
125 * misc Changed wording to be a bit more consistent to
126 draft-gudmundsson-life-of-dnskey-00.txt
127 - State of published key will be print as "pub" instead of "pre"
129 - Option --pre-publish of dnssec-zkt changed to --published.
130 - Changed wording in all comments and log message from "pre-publish"
133 * func Highly experimental code to do a full automatic ksk rollover
135 ksk_rollover() added in rollover.c; parameter change for ksk_status()
137 * misc Changed name of "dnssec-soaserial" to "zkt-soaserial"
139 * bug Fixed verbose logging error if -N or -D option was used
141 * func Some LG_INFO messages added about key status change
143 * func Remove of function to register a new ksk (zktr.[ch])
145 * misc Changed licence from GNU GPLv2 to BSD licence
147 * bug Fixed bug in logging of ZSK rollover
149 * misc Changed tar file to zipped one and archive the files with
152 * bug Fixed use of uninitialized vars in zconf.c (line)
154 * port Preparation for use of autoconf
155 - config.h renamed to config_zkt.h and change of include directives
156 - conditional include of config.h
157 - ./configure script is able to determine BIND utility path
158 (BIND_UTIL_PATH) and version (BIND_VERSION)
159 - compile time options are settable via configure script (--enable-xxx)
160 - For now, the configure script is not able to set the install dir.
162 * bug ksk rollover phase2 did not trigger resigning of parent
163 (the parent file was copied to the parent directory only
164 after child zone resigning)
166 * bug fixed bad notice message in zskstatus ()
168 * func dnssec-zkt -Z print out syslog facility & level with
169 upper case letter and without quotation marks
171 * func Syslog facility DAEMON added
173 zkt 0.96 -- 19. June 2008
175 * func Config file option "SIG_Parameter" added.
177 * func Function verbmesg() added and used for verbose logging
178 to stdout and/or to syslog resp. file.
179 Config file parameter VerboseLog added to config file.
181 * bug Option -O wasn't recognized by dnssec-signer
183 * func Better support of initial setup of dynamic signed
184 zones (just create an empty "zone.db.dsigned" file
185 and run dnssec-signer with option -d).
187 * func Improved error logging; incr_soa() errors are written
188 as clear text message instead of error number
190 * func elog_mesg() function replaced by a more general
192 ErrorLog config parameter replaced by LogFile,
193 LogLevel and SyslogFacility, SyslogLevel parameter
195 * func New function filesize() added
197 * func dki_prt_trustedkey print out old key id if key
200 * func dki_new() writes gentime (GMT) and proposed key
201 lifetime (days) as comment into the *.key file
203 * bug Doing some housekeeping
205 zkt 0.95 -- 19. April 2008
207 * misc This is not a public released version of zkt.
209 * func All config file option are now settable via
210 commandline option -O (--option or --config-option)
212 * misc Function fatal() now has an exit code of 127.
213 This is necessary because values from 1 to 64 are
214 reflecting the number of errors occured.
216 * func Errorlog functionality added
217 All dnssec-signer errors will be logged in the file
218 specified by the Errorlog config file parameter or
219 specified by the command line option -L (--errorlog).
220 If a directory is given, then the logging will occur
221 in a file within this directory which is named
222 like "zkt-<current-date>.log".
223 The dnssec-signer command has an exit code of 0 if
224 no error occured, an exit code of 127 on fatal errors,
225 an exit code from 1 to 63 reflecting the number of errors
226 occured, or an exit code of 64 if more than 63 errors
229 * func dnssec-signer: Introducing long options
231 * bug New skript added to example/views directory to
232 read in the right config file
234 * func New option -f (--lifetime) and -F (--setlifetime)
237 * func New option -e (--expire) added to dnssec-zkt.
238 (Seems to be that the dnssec-zkt command is a little
239 bit overloaded with options.)
241 * func dki.c and zkt.c supports storage of key lifetime,
242 generation time and expiration time as a comment in the
243 .key file. With this, it's possible to change the default
244 lifetime without any impact on already used keys.
246 zkt 0.94 -- 6. Dec 2007
248 * bug Case mismatch of zone name and key file name prevent
249 dki_read() from reading the key.
250 Thanks to Alan Clegg for finding this out.
251 Added some additional error processing and convert
252 zone name to lower case.
254 * misc Builtin default for KSK_randfile changed
255 from NULL to "/dev/urandom".
257 * bug dnssec-signer has to use private keys for signing
258 even if the revoke bit is set.
259 To achieve this the file pattern K*.private is added
260 to the dnssec-signzone run.
262 * bug Uninitialized variable "len" in sign_zone().
264 * func Default config file is settable via environment
265 variable ZKT_CONFFILE
267 * func Support of views added
268 Link dnssec-zkt to dnssec-zkt-<view> and
269 dnssec-signer to dnssec-signer-<view>.
270 Option -V and --view added to dnssec-zkt.
271 Option -V added to dnssec-signer.
272 View support added to parse_namedconf().
274 zkt 0.93 -- 1. Nov 2007
276 * func The ksk registration mechanism is disabled by
277 default (see REG_URL in config.h).
279 * func Basic support for revoke flag added (RFC5011).
280 Semantic of option -R of dnssec-zkt changed.
282 * func Undocumented option -S changed to lower case.
283 Pre-pulished KSK will be shown as "standby" key.
284 New Option -S (standby) for pre-publish KSK.
286 * func New command dnssec-soaserial added.
288 * bug dnssec-signer do not print the incremented serial
290 time2str() fixed bug in time format (HAS_STRFTIME=0).
292 * port New build dependencies "solaris", "macos" and "help"
295 zkt 0.92 -- 1. Oct 2007
297 * func Parameter "Serialformat" in dnssec.conf added .
298 Now it is possible to use the unixtime format for
299 the SOA serial number. If you use BIND 9.4 or
300 greater in conjunction with this, than there is no
301 need for the special SOA serial formating in
302 the zonefile. (Thanks to Jakob Schlyter for the
303 -N option of dnssec-signzone and the suggestion to
304 add the unixtime support to zkt)
306 * func Option --ksk-roll-stat added.
308 * port Added macro HAS_GETOPT_LONG to support OS with
309 lack of getopt_long() (e.g. solaris).
310 Options -[01239] added.
312 * misc Unused macro HAS_ULONG removed from config.h.
313 Deklaration of unsigned types moved from dki.h to
314 config.h (so it will be available in _all_ source
315 files). Thanks to Mans Nilsson.
316 Unused macro isblank() (ncparse.c) removed.
318 * bug In dosigning(): freeze the dynamic zone _before_ copying
321 zkt 0.91 -- 1. Apr 2007
323 * doc --ksk-rollover option added to usage().
325 * func some experimental code for dynamic zones added.
326 new functions added: copyzonefile(), dyn_update_freeze().
327 New option "-d" added.
329 zkt 0.90 -- 6. Dec 2006
331 * func CHECK_RESIGN interval added to config.h.
332 This is the dnssec-signer calling interval (at least 1 day or 86400 sec).
334 * func new function dki_destroy() added; semantic of dk_remove()
335 changed to rename the key files instead of physical deletion.
337 * doc Setup of new example directory (flat and hierarchical).
339 * doc dnssec-zkt man page updated.
340 Added some comments in misc.c
342 * misc function strtaint() renamed to str_untaint(),
343 dki_keycmp() renamed to dki_tagcmp().
345 * func New parameter key_ttl added to dnssec.conf.
346 New func dki_prt_dnskeyttl () added.
347 Now dnskey.db is written with key_ttl value.
349 * func dnssec-signer: In hierarchical mode sign_zone() copies the
350 parent-file (if such a file exist) instead of the
351 keyset-file to the parent directory.
353 * func dnssec-zkt: Option --ksk-roll-phase[123] and function
354 ksk_rollover() added.
356 * misc zconf: default values for sigvalidity, resign_int etc. changed,
357 new dnssec.conf example file created.
359 * func dnssec-zkt: Long option support added.
361 zkt 0.83 -- 11. Sep 2006
363 * bug dosigning(): Fixed bug in the bug fixing of printing undefined
364 serial number if incr_serial() failed. (Thanks to Randy McCasskill).
366 zkt 0.82 -- 8. Sep 2006
368 * bug Use option -e for dnssec-keygen calls in dki_new(), because
369 an RSA exponent of 3 is vulnerable.
371 * bug dosigning(): Fixed bug in printing undefined serial
372 number if incr_serial() failed.
374 an RSA exponent of 3 is vulnerable.
376 * bug dosigning(): Fixed bug in printing undefined serial
377 number if incr_serial() failed.
379 zkt 0.81 -- 13. July 2006
381 * bug The function ceatekey() won't work with USE_TREE.
382 Size of MAX_DNAME increased.
384 zkt 0.8 -- 09. July 2006
386 * func Now a hierarchical directory structure with subdomains stored in
387 subfolders of the parent domain are allowed. Added copyfile(),
388 cmpfile() and new_keysetfiles() for that.
390 * func Config parameter added to choose if the domain name is
391 right or left justified listed by dnssec-zkt (printkeyinfo).
393 * func New class of key added ("sep"). A SEP key is a (public) key file
394 without the private counterpart. So we could use the key solely
395 as an secure entry point. (dki.h, dki_read).
397 zkt 0.70 -- 15. Sep 2005
399 * func Experimental code added to use a binary search tree instead of a
400 single linked list. This is mainly for performance improvement for large
401 sites. If you don't want to use it, set USE_TREE in config.h to zero.
402 In the first step only dnssec-zkt use the new data structure.
403 The tree is build over the domain names and each node is the starting point
404 of a linked list of keys.
405 As a result, it's not possible anymore to search on key tags only. You have
406 to specify the domain name plus the tag. :-(
408 * func Function parseurl added.
410 * func Experimental code to register a new ksk. Currently it's more like
411 a key announcement because of the lack of identification and
414 zkt 0.65 -- 22. Aug 2005
416 * misc Rewrite of the domaincmp() function. Now it's round about 2 times faster.
417 After some additional changes and the compiler option -O3 the dnssec-zkt
418 on the ~ 12000 zones requires only a minute
419 $ time dnssec-zkt -z -r sec > /dev/null
424 * func A keyset directory is introduced (experimental)
425 The parameter -d is added to the call of the dnssec-signzone command
426 if the config option KeySetDir is set.
427 As a result, all dsset-, keyset- and dlvset- files are stored in one directory.
428 The advantage is, that the chain of trust of all local subzone is build
429 automatically (This is the reason why we sort the zones with the child zones
431 The disadvantage is that we store many files in single directory (3 files
434 zkt 0.64 -- 1. Aug 2005
436 * bug The code for option -Z of dnssec-zkt should be executed before we read the
437 complete directory tree. This is usefull if we have a very deep directory
438 structure and the recursive flag is switched on.
440 * func SIG_Pseudorand parameter added.
442 * func ([KZ]SK)|(SIG)_randfile parameter added.
444 * func measure the time used for signing of each zone.
446 * bug function logflush() added to misc.c and called by dosigning().
448 * misc some perfomance test made:
449 - Directory structure "sec/<firstletter>/domain" with round about 12200 domains
450 - One of the domain is a big one (~ 820000 RRs), the others are mostly very small ones
451 - We use a dsa with 704 bits as ksk and a rsamd5 with 512 bits as zsk on each domain.
452 - All test made on Sun Fire V440 with 4 CPU and 4x2GB main memory
454 # sequential signing of all zones
455 $ time dnssec-signer -v -v -f -D sec
456 real 434m (~ 7h 14min)
460 # with option -p and -r /dev/urandom
461 $ time dnssec-signer -v -v -f -D sec > log
466 # one process for each firstletter subdirectory
472 # with option -p and -r /dev/urandom
479 $ time dnssec-zkt -z -r sec > /dev/null
485 # signing the big (820000 RR) domain only
486 $ time dnssec-signer -v -v -f -D sec/b/big-domain
487 real 196m23.165 (~ 3h 16min)
491 # with option -p and -r /dev/urandom
492 $ time dnssec-signer -v -v -f -D sec/b/big-domain
497 zkt 0.63 -- 14. June 2005
499 * bug allow TTL value in keyfiles (see TTL_IN_KEYFILES_ALLOWED
502 * misc function strchop() added to misc.c.
504 zkt 0.62 -- 13. May 2005
506 * func dnssec-signer: Option -o added.
507 Now it works a little bit more like dnssec-signzone.
509 * func strlist.c: prepstrlist and unprepstrlist functions get a
510 second parameter for the delimiter.
512 * bug fixed some typos and inaccurate usage of symbolic constants.
513 Doing some housekeeping.
515 zkt 0.61 -- 3. May 2005
517 * bug local config file will not be mentioned if -N switch is used.
519 zkt 0.6 -- 1. May 2005
521 * doc dnssec-signer: man page added.
523 * func dnssec-signer: Print out a warning message if ksk lifetime is exceeded.
525 * func dnssec-signer: Remaining arguments will be interpreted as zone names
526 (in_strarr () added).
528 * func dnssec-signer: Option -D added.
531 zkt 0.51 -- 8. April 2005
533 * func dnssec-signer: Option -N added.
535 * func dnssec-signer: change of keystatus from pre-published to active
536 resets timestamp of key, thus age of active key counts 0.
538 * bug prepstrlist: resulting string was not terminated with '\0'.
540 * bug dnssec-signer: do signing if there are additional keys, or the
541 status of any key is changed (function check_keytimestamp).
543 * func dnssec-zkt: -l <list> option added.
545 * func dnssec-zkt: -p flag defaults to on in key creation mode (-C).