]> granicus.if.org Git - pdns/commitdiff
allow combined signing key; drop default KSK
authorPeter van Dijk <peter.van.dijk@powerdns.com>
Tue, 22 Dec 2015 10:29:50 +0000 (11:29 +0100)
committerPeter van Dijk <peter.van.dijk@powerdns.com>
Tue, 22 Dec 2015 17:26:09 +0000 (18:26 +0100)
pdns/common_startup.cc
pdns/pdns.conf-dist
pdns/pdnsutil.cc
regression-tests/tests/00dnssec-grabkeys/command
regression-tests/tests/axfr/expected_result.dnssec
regression-tests/tests/axfr/expected_result.nsec3
regression-tests/tests/axfr/expected_result.nsec3-optout
regression-tests/tests/direct-dnskey/expected_result.dnssec

index 57f913cff38d8551491e827bc96a0614d02d9663..06871f9d13d0e86e60e0f2c8c420651253ab97d6 100644 (file)
@@ -168,7 +168,7 @@ void declareArguments()
 
   ::arg().setSwitch("traceback-handler","Enable the traceback handler (Linux only)")="yes";
   ::arg().setSwitch("direct-dnskey","Fetch DNSKEY RRs from backend during DNSKEY synthesis")="no";
-  ::arg().set("default-ksk-algorithms","Default KSK algorithms")="rsasha256";
+  ::arg().set("default-ksk-algorithms","Default KSK algorithms")="";
   ::arg().set("default-ksk-size","Default KSK size (0 means default)")="0";
   ::arg().set("default-zsk-algorithms","Default ZSK algorithms")="rsasha256";
   ::arg().set("default-zsk-size","Default ZSK size (0 means default)")="0";
index 7d119edf2238c172b31cb5e3d5a5a6aaade87b23..69ccfa6f4446b94fc0928ff14385a93110f07455 100644 (file)
@@ -97,7 +97,7 @@
 #################################
 # default-ksk-algorithms       Default KSK algorithms
 #
-# default-ksk-algorithms=rsasha256
+# default-ksk-algorithms=
 
 #################################
 # default-ksk-size     Default KSK size (0 means default)
index f32c03fe12154af6877659584a9363762e40d6b8..568ff3c25c26e389d7284fa1b2041096d72d1002 100644 (file)
@@ -136,7 +136,7 @@ void loadMainConfig(const std::string& configdir)
   string configname=::arg()["config-dir"]+"/"+s_programname+".conf";
   cleanSlashes(configname);
 
-  ::arg().set("default-ksk-algorithms","Default KSK algorithms")="rsasha256";
+  ::arg().set("default-ksk-algorithms","Default KSK algorithms")="";
   ::arg().set("default-ksk-size","Default KSK size (0 means default)")="0";
   ::arg().set("default-zsk-algorithms","Default ZSK algorithms")="rsasha256";
   ::arg().set("default-zsk-size","Default ZSK size (0 means default)")="0";
@@ -1193,18 +1193,14 @@ bool secureZone(DNSSECKeeper& dk, const DNSName& zone)
      throw runtime_error("KSK key size must be equal to or greater than 0");
   }
 
-  if (k_algos.size() < 1) {
-     throw runtime_error("No algorithm(s) given for KSK");
+  if (k_algos.size() < 1 && z_algos.size() < 1) {
+     throw runtime_error("Zero algorithms given for KSK+ZSK in total");
   }
 
   if (z_size < 0) {
      throw runtime_error("ZSK key size must be equal to or greater than 0");
   }
 
-  if (z_algos.size() < 1) {
-     throw runtime_error("No algorithm(s) given for ZSK");
-  }
-
   if(dk.isSecuredZone(zone)) {
     cerr << "Zone '"<<zone.toString()<<"' already secure, remove keys with pdnsutil remove-zone-key if needed"<<endl;
     return false;
@@ -1224,9 +1220,9 @@ bool secureZone(DNSSECKeeper& dk, const DNSName& zone)
   }
 
   if (k_size)
-    cout << "Securing zone with " << k_algos[0] << " algorithm with key size " << k_size << endl;
+    cout << "Securing zone with key size " << k_size << endl;
   else
-    cout << "Securing zone with " << k_algos[0] << " algorithm with default key size" << endl;
+    cout << "Securing zone with default key size" << endl;
 
 
   DNSSECKeeper::keyset_t zskset=dk.getKeys(zone, false);
@@ -1236,8 +1232,27 @@ bool secureZone(DNSSECKeeper& dk, const DNSName& zone)
     return false;
   }
 
-  for(vector<string>::iterator i = k_algos.begin(); i != k_algos.end(); i++) {
-    if(!dk.addKey(zone, true, shorthand2algorithm(k_algos[0]), k_size, true)) {
+  for(auto &k_algo: k_algos) {
+    cout << "Adding KSK with algorithm " << k_algo << endl;
+
+    int algo = shorthand2algorithm(k_algo);
+
+    if(!dk.addKey(zone, true, algo, k_size, true)) {
+      cerr<<"No backend was able to secure '"<<zone.toString()<<"', most likely because no DNSSEC"<<endl;
+      cerr<<"capable backends are loaded, or because the backends have DNSSEC disabled."<<endl;
+      cerr<<"For the Generic SQL backends, set the 'gsqlite3-dnssec', 'gmysql-dnssec' or"<<endl;
+      cerr<<"'gpgsql-dnssec' flag. Also make sure the schema has been updated for DNSSEC!"<<endl;
+      return false;
+    }
+  }
+
+  for(auto &z_algo :  z_algos)
+  {
+    cout << "Adding ZSK with algorithm " << z_algo << endl;
+
+    int algo = shorthand2algorithm(z_algo);
+
+    if(!dk.addKey(zone, false, algo, z_size, true)) {
       cerr<<"No backend was able to secure '"<<zone.toString()<<"', most likely because no DNSSEC"<<endl;
       cerr<<"capable backends are loaded, or because the backends have DNSSEC disabled."<<endl;
       cerr<<"For the Generic SQL backends, set the 'gsqlite3-dnssec', 'gmysql-dnssec' or"<<endl;
@@ -1255,12 +1270,6 @@ bool secureZone(DNSSECKeeper& dk, const DNSName& zone)
     return false;
   }
 
-  for(string z_algo :  z_algos)
-  {
-    int algo = shorthand2algorithm(z_algo);
-    dk.addKey(zone, false, algo, z_size);
-  }
-
   // rectifyZone(dk, zone);
   // showZone(dk, zone);
   cout<<"Zone "<<zone.toString()<<" secured"<<endl;
index 8c9a673db50453cf7f5f76ed43b3e19755b46220..1cb5a783d1637eed9169a9730d84d83d3e843d95 100755 (executable)
@@ -6,7 +6,7 @@ for zone in $(grep 'zone ' named.conf  | cut -f2 -d\")
 do
        if [ "${zone: 0:16}" != "secure-delegated" ]
        then
-               drill -p $port -o rd -D dnskey $zone @$nameserver | grep $'DNSKEY\t257' | grep -v 'RRSIG' | grep -v '^;' | grep -v AwEAAarTiHhPgvD28WCN8UBXcEcf8f >> trustedkeys
+               drill -p $port -o rd -D dnskey $zone @$nameserver | grep $'DNSKEY\t256' | grep -v 'RRSIG' | grep -v '^;' | grep -v AwEAAarTiHhPgvD28WCN8UBXcEcf8f >> trustedkeys
        fi
        echo "stub-zone:" >> unbound-host.conf
        echo "  name: $zone" >> unbound-host.conf
index 285d2d92d14495617c68b6f06b09487bbc981de1..3180d23bb19adb5e2991168f9434242359283729 100644 (file)
@@ -11,7 +11,6 @@ dnssec-parent.com.    3600    IN      RRSIG   SOA 8 2 3600 [expiry] [inception] [keytag] dnss
 dnssec-parent.com.     3600    IN      SOA     ns1.dnssec-parent.com. ahu.example.com. 2005092501 28800 7200 604800 86400
 dnssec-parent.com.     3600    IN      SOA     ns1.dnssec-parent.com. ahu.example.com. 2005092501 28800 7200 604800 86400
 dnssec-parent.com.     86400   IN      DNSKEY  256 3 8 ...
-dnssec-parent.com.     86400   IN      DNSKEY  257 3 8 ...
 dnssec-parent.com.     86400   IN      NSEC    insecure-delegated.ent.ent.auth-ent.dnssec-parent.com. A NS SOA RRSIG NSEC DNSKEY
 dnssec-parent.com.     86400   IN      RRSIG   DNSKEY 8 2 86400 [expiry] [inception] [keytag] dnssec-parent.com. ...
 dnssec-parent.com.     86400   IN      RRSIG   NSEC 8 2 86400 [expiry] [inception] [keytag] dnssec-parent.com. ...
index fac00d14f572ec5de4bd2e82c83d90ee53455208..36fd81a524faca5f9c2b0a21a4b925c21fecaf4e 100644 (file)
@@ -13,7 +13,6 @@ dnssec-parent.com.    3600    IN      RRSIG   SOA 8 2 3600 [expiry] [inception] [keytag] dnss
 dnssec-parent.com.     3600    IN      SOA     ns1.dnssec-parent.com. ahu.example.com. 2005092501 28800 7200 604800 86400
 dnssec-parent.com.     3600    IN      SOA     ns1.dnssec-parent.com. ahu.example.com. 2005092501 28800 7200 604800 86400
 dnssec-parent.com.     86400   IN      DNSKEY  256 3 8 ...
-dnssec-parent.com.     86400   IN      DNSKEY  257 3 8 ...
 dnssec-parent.com.     86400   IN      NSEC3   1 0 1 abcd [next owner] A NS SOA RRSIG DNSKEY NSEC3PARAM
 dnssec-parent.com.     86400   IN      NSEC3PARAM      1 0 1 abcd
 dnssec-parent.com.     86400   IN      RRSIG   DNSKEY 8 2 86400 [expiry] [inception] [keytag] dnssec-parent.com. ...
index c1aac6784464401b27707ccc7042a7f1589a5040..f3298b94afd8795b210dc3d877854203fde63999 100644 (file)
@@ -11,7 +11,6 @@ dnssec-parent.com.    3600    IN      RRSIG   SOA 8 2 3600 [expiry] [inception] [keytag] dnss
 dnssec-parent.com.     3600    IN      SOA     ns1.dnssec-parent.com. ahu.example.com. 2005092501 28800 7200 604800 86400
 dnssec-parent.com.     3600    IN      SOA     ns1.dnssec-parent.com. ahu.example.com. 2005092501 28800 7200 604800 86400
 dnssec-parent.com.     86400   IN      DNSKEY  256 3 8 ...
-dnssec-parent.com.     86400   IN      DNSKEY  257 3 8 ...
 dnssec-parent.com.     86400   IN      NSEC3   1 1 1 abcd [next owner] A NS SOA RRSIG DNSKEY NSEC3PARAM
 dnssec-parent.com.     86400   IN      NSEC3PARAM      1 0 1 abcd
 dnssec-parent.com.     86400   IN      RRSIG   DNSKEY 8 2 86400 [expiry] [inception] [keytag] dnssec-parent.com. ...
index e91b71279114deaeb1f33e869c0c5dd7fddf540f..477a963b1c9cdf1a1de67f7ea81a0343c679c67c 100644 (file)
@@ -1,5 +1,4 @@
 0      example.com.    IN      DNSKEY  86400   256 3 8 ...
-0      example.com.    IN      DNSKEY  86400   257 3 8 ...
 0      example.com.    IN      RRSIG   86400   DNSKEY 8 2 86400 [expiry] [inception] [keytag] example.com. ...
 2      .       IN      OPT     32768   
 Rcode: 0 (No Error), RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0