diff --git a/src/knot/events/handlers/ds_push.c b/src/knot/events/handlers/ds_push.c
index 7521fe17b2744ff9970f53be097e7105394313fe..1e9a48799fd644b1d0299ce99cc7d87f5ad9d979 100644
--- a/src/knot/events/handlers/ds_push.c
+++ b/src/knot/events/handlers/ds_push.c
@@ -171,6 +171,7 @@ static int send_ds_push(conf_t *conf, zone_t *zone,
 		return KNOT_EOK; // No CDS, do nothing.
 	}
 	zone_cds.type = KNOT_RRTYPE_DS;
+	zone_cds.ttl = node_rrset(zone->contents->apex, KNOT_RRTYPE_DNSKEY).ttl;
 
 	struct ds_push_data data = {
 		.zone = zone->name,
diff --git a/tests-extra/tests/dnssec/ds_push/test.py b/tests-extra/tests/dnssec/ds_push/test.py
index b68d74fbc9621679ad6c91e340b24f71c1b3bcf0..ccd8f369b125cfa806ff56330a05bc39ae1c0359 100644
--- a/tests-extra/tests/dnssec/ds_push/test.py
+++ b/tests-extra/tests/dnssec/ds_push/test.py
@@ -141,5 +141,7 @@ watch_ksk_rollover(t, child, child_zone, 2, 2, 3, "KSK rollover")
 
 resp = parent.dig(ZONE, "DS")
 resp.check_count(1, rtype="DS")
+if resp.resp.answer[0].ttl != child.dnssec(child_zone).dnskey_ttl:
+    set_err("DS TTL")
 
 t.end()