Hi Libor,
Hi Daniel,

thanks for you feedback. I upgraded the affected machine to 3.1.7 and the problem is solved for me.

Thanks,
Thomas


On 25.04.22 12:36, libor.peltan wrote:
Hi Thomas,

thanks much for your report!

This is indeed a bug, which was introduced in Knot DNS version 3.0.6 (by fixing another bug...), and fixed unintentionally by implementing a feature in 3.1.0.

I recommend that you work around by using any unaffected version, e.g. 3.1.7.

Please let us know any following interesting findings.

Thank you,

Libor

Dne 23. 04. 22 v 19:45 Daniel Salzman napsal(a):
Hi Thomas,

what changed since the time when it worked? Still the same Knot version?

Daniel

On 4/22/22 23:12, Thomas wrote:
Hi,

for the transition of a TLD I need to import the current providers KSK into my zone. I use the "keymgr import-pub" command for this.  I have done that a few times in the past and it worked very well.

I have now installed the most current version of Knot (3.0.10) and did the same procedure. But after importing the KSK the zone can't be signed anymore. It seems like Knot doesn't recognize that this imported key is a "public-only" key. Knot throws an error and complains that the private key could not be loaded.



The zone's keys (.example) before the import of the KSK:

# keymgr example list
0b94a3f9fef3ae531fc5ee1334ddd2876db7cd9a ksk=yes zsk=no tag=12595 algorithm=7  size=2048 public-only=no  pre-active=0 publish=1650495677 ready=1650495677 active=1650659051 retire-active=0 retire=0 post-active=0 revoke=0 remove=0 13cc082655ddf7160787ef945ad7edb6406bb70e ksk=no  zsk=yes tag=05477 algorithm=7  size=1024 public-only=no  pre-active=0 publish=1650495677 ready=0 active=1650495677 retire-active=0 retire=0 post-active=0 revoke=0 remove=0


Imported the KSK with the following command:

# keymgr example import-pub /etc/knot/public.key
2c135e77b7f48475a837ad0d28a9459f0e7ce621
OK


The zone's keys (.example) after the import of the KSK:

# keymgr example list
0b94a3f9fef3ae531fc5ee1334ddd2876db7cd9a ksk=yes zsk=no tag=12595 algorithm=7  size=2048 public-only=no  pre-active=0 publish=1650495677 ready=1650495677 active=1650659051 retire-active=0 retire=0 post-active=0 revoke=0 remove=0 13cc082655ddf7160787ef945ad7edb6406bb70e ksk=no  zsk=yes tag=05477 algorithm=7  size=1024 public-only=no  pre-active=0 publish=1650495677 ready=0 active=1650495677 retire-active=0 retire=0 post-active=0 revoke=0 remove=0 2c135e77b7f48475a837ad0d28a9459f0e7ce621 ksk=yes zsk=no tag=35421 algorithm=7  size=2048 public-only=yes pre-active=0 publish=1650660072 ready=0 active=0 retire-active=0 retire=0 post-active=0 revoke=0 remove=0

The imported key (tag 35421) has the flag "public-only=yes", as expected.


But when I now sign the zone, the log shows this errors:


Apr 22 20:43:24 lab-nic knotd[2831]: info: [example.] control, received command 'zone-sign' Apr 22 20:43:24 lab-nic knotd[2831]: info: [example.] DNSSEC, dropping previous signatures, re-signing zone Apr 22 20:43:24 lab-nic knotd[2831]: info: [example.] DNSSEC, key, tag 12595, algorithm RSASHA1_NSEC3_SHA1, KSK, public, active Apr 22 20:43:24 lab-nic knotd[2831]: info: [example.] DNSSEC, key, tag 35421, algorithm RSASHA1_NSEC3_SHA1, KSK, public, active+ Apr 22 20:43:24 lab-nic knotd[2831]: info: [example.] DNSSEC, key, tag 5477, algorithm RSASHA1_NSEC3_SHA1, public, active Apr 22 20:43:24 lab-nic knotd[2831]: error: [example.] DNSSEC, failed to load private keys (not exists) Apr 22 20:43:24 lab-nic knotd[2831]: error: [example.] DNSSEC, failed to load keys (not exists) Apr 22 20:43:24 lab-nic knotd[2831]: info: [example.] DNSSEC, next signing at 2022-04-22T21:43:24+0000 Apr 22 20:43:24 lab-nic knotd[2831]: error: [example.] zone event 'DNSSEC re-sign' failed (not exists)


The imported key should not have the "active" flag:

info: [example.] DNSSEC, key, tag 35421, algorithm RSASHA1_NSEC3_SHA1, KSK, public, active+


It seems to me that the imported key is not seen as a "public-only" key anymore and therefore Knot is looking for the corresponding private key, which of course fails.


I attached an strace output, with the signing operation. But that doesn't seem to be helpful because the signing command itself doesn't fail.

Thanks,
Thomas

--
--

--

Reply via email to