From 52369bbf0a476de161e246f4b4207daf3d8193a2 Mon Sep 17 00:00:00 2001 From: Petr Spacek Date: Jan 07 2016 15:23:27 +0000 Subject: DNSSEC: Make sure that current key state in LDAP matches key state in BIND We have to explicitly specify "none" value to prevent dnssec-keyfromlabel utility from using current time for keys without "publish" and "activate" timestamps. Previously this lead to situation where key was in (intermediate) state "generated" in OpenDNSSEC but BIND started to use this key for signing. https://fedorahosted.org/freeipa/ticket/5348 Reviewed-By: Martin Basti Reviewed-By: Martin Basti --- diff --git a/ipapython/dnssec/bindmgr.py b/ipapython/dnssec/bindmgr.py index 2c67816..70caaf4 100644 --- a/ipapython/dnssec/bindmgr.py +++ b/ipapython/dnssec/bindmgr.py @@ -58,6 +58,8 @@ class BINDMgr(object): return dt.strftime(time_bindfmt) def dates2params(self, ldap_attrs): + """Convert LDAP timestamps to list of parameters suitable + for dnssec-keyfromlabel utility""" attr2param = {'idnsseckeypublish': '-P', 'idnsseckeyactivate': '-A', 'idnsseckeyinactive': '-I', @@ -65,10 +67,12 @@ class BINDMgr(object): params = [] for attr, param in attr2param.items(): + params.append(param) if attr in ldap_attrs: - params.append(param) assert len(ldap_attrs[attr]) == 1, 'Timestamp %s is expected to be single-valued' % attr params.append(self.time_ldap2bindfmt(ldap_attrs[attr][0])) + else: + params.append('none') return params