Hi,
The timings are based on RFC 7583 and "Flexible and Robust Key Rollover
in DNSSEC". They may help a great deal in understanding the time states.
https://datatracker.ietf.org/doc/html/rfc7583
https://nlnetlabs.nl/downloads/publications/satin2012-Schaeffer.pdf
See below for inline answers.
Best regards,
Matthijs
On 20-02-2025 21:46, Nguyen Thi Minh Tam via bind-users wrote:
Hi,
I'm trying out DNSSEC policy for the first time, and I am so confused
about the time states—how they calculate the time for the state of the
records to change. I really need help because I have a ton of questions
(I'm using BIND 9.18.31, btw). I want to understand how it works step by
step, so I'm checking out everything.
*1. When BIND 9 first starts signing DNSSEC, the record states go
like this:*
*DNSKEY (KSK):*
* *publish = rumoured*
* *rumoured → omnipresent* = |dnskey-ttl + zone delay + publish
safety| (1)
*DS:*
* *publish = hidden*
* *hidden → rumoured* = ??? (2) (3)
* *rumoured (DSpublish) → omnipresent* = |ds-ttl + parent-zone-delay +
retire safety| (4)
*Key RRSIG:*
* *publish = rumoured*
* *rumoured → omnipresent* = |dnskey-ttl + zone delay + publish
safety| (1)
*DNSKEY (ZSK):*
* *publish = rumoured*
* *rumoured → omnipresent* = |dnskey-ttl + zone delay + publish
safety| (1)
*Zone RRSIG:*
* *publish = rumoured*
* *rumoured → omnipresent* = ?? (5)
*Here are my questions:*
(1) Since this is the first key, I guess the formula should be |zone
delay + publish safety|?
We don't make an exception for that (we could, I guess).
(2) I have no idea how this works.
The DS cannot be introduced automatically. So only after seeing the DS
in the parent, the DSPublish will be set. This can be done with a 'rndc
dnssec -checkds' command, or you can configure parental agents.
In 9.20, there is a 'checkds yes' option that will lookup the NS records
of the parent zone to see if the DS is already published. If configured,
this will move the DS to rumoured automatically.
(3) Same with |PublishCDS|. What is the formula, and why? Must I wait
for |CDS| to be published before submitting |DS| to the parent zone?
The PublishCDS is the time that the CDS and CDNSKEY can be published. At
this time it is safe to publish the DS. You can submit it to the parent
earlier, but at the risk of your zone being validated as bogus by some
resolvers.
(4) This only makes sense when rolling a key. Should the formula be
|parent-delay + publish safety (of the parent zone)|?
For the first key yes, but we don't make exceptions for the first key.
(5) I have absolutely no idea, but it looks like it changes at the same
time as when the DS goes from hidden to rumoured.
max-zone-ttl + zone-propagation-delay + retire-safety.
------------------------------------------------------------------------
*2. Then I tried a ZSK rollover, which turned out to be a bit weird.*
* If the KSK is *omnipresent*, ZSK will roll using the *pre-publish*
method.
* If the KSK is *not omnipresent*, ZSK will roll using the
*double-signing* method.
* The new ZSK is *published and starts signing at the same time*, but
it initially *only signs the SOA record*.
* When I query the SOA record, *two RRSIGs (from both ZSKs) are returned*.
* The rest of the zone *remains signed with the old ZSK*.
* After a while, the entire zone *switches to the new ZSK RRSIGs*.
* Then, |named| *removes the old ZSK DNSKEY*.
The timeline is even *weirder* than I expected.
Is this normal? Should i avoid this situation in reality?
Please provide a reproducer because this does not sound normal. ZSK
rollovers will always do "pre-publish". There should be a smooth
rollover, so using one signature from one of the keys at the time.
Things may be different when the DS is considered not public though.
--
Visit https://lists.isc.org/mailman/listinfo/bind-users to unsubscribe from
this list
ISC funds the development of this software with paid support subscriptions.
Contact us at https://www.isc.org/contact/ for more information.
bind-users mailing list
bind-users@lists.isc.org
https://lists.isc.org/mailman/listinfo/bind-users