Hi Antti,
I agree with you. When we started with OpenDNSSEC we decided it was a
good design to split the key management functionality and the signer
functionality in two daemons, as it are two very separate tasks. And it
has its benefits (code simplicity, flexibility (only use enforcer or
signer, ...)
However, now that the project exists some longer time, we also
identified some quirks, your example being one of them, and the split is
not as strict as we once thought. We could solve this in multiple ways:
1. More communication between enforcer and signer, signer could signal
events that have happened. We would lose flexibility, as we tie signer
and enforcer together.
2. One daemon to rule them all. Might be more simpler than adding all
kinds of communications, operational wise too.
3. Scripts that check an event has happened, instead of relying on time
only. This has the advantage signer and daemon can still be ran
separately and you can mix enforcer with a different signer for example.
Just some ideas of how we can fix it in the future. For a short term
work around, I assume monitoring is your friend.
Best regards,
Matthijs
On 05-03-14 11:37, Antti Ristimäki wrote:
Hi,
We've been lately starting worrying about the possible decoupling
between enforcerd and signerd. Given that enforcerd is responsible for
rolling the keys and managing related timers, I think it should receive
at least some level of feedback from the signerd in order to do all the
timings properly. Let's consider for example the following simple and
quite realistic scenario:
1) Enforcerd runs and decides that it's time to introduce a new key into
the zone.
2) The zone next signing should take place but for some reason the zone
is NOT signed, for example due to an outage in the zone provisioning
system. All the subsequent signings are also missed, so the zone won't
get signed until phase 3)
3) Enforcerd runs again and decides that the new key has now been
published for long enough and marks it as active.
4) The zone signing process chain works again and the zone gets signed.
As the new key is now active, the zone gets populated with signatures
created with the new key.
5) A random resolver queries for an RRset not present in cache and
receives it along with the signature created with the new key. The
resolver still has the old DNSKEY RRset in cache and thus validation
fails until cached DNSKEY RRset expires.
The scenario described above is only a single example, but the issue
would also occur if the zone is signed between enforcerd periodic runs
but the updated zone is not propagated to public DNS servers. An
ultimate feature would be if the enforcerd could somehow track whether
the key state changes have been actually propagated to public DNS. Maybe
this could be accomplished by some optional hook to some user defined
script?
The probability of this issue is not so big when the signerd runs
periodically e.g. every half an hour, but in environments where the zone
signing is triggered only when the zone is received from a provisioning
system, the probability might be much bigger.
It is also worth mentioning, that the default PublishSafety interval is
only 3600s IIRC.
Any thoughts about this? Is there already some mechanism in OpenDNSSEC
to prevent this issue that I'm not aware of?
Antti
_______________________________________________
Opendnssec-user mailing list
[email protected]
https://lists.opendnssec.org/mailman/listinfo/opendnssec-user
_______________________________________________
Opendnssec-user mailing list
[email protected]
https://lists.opendnssec.org/mailman/listinfo/opendnssec-user