--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/dnssec-creatkey Mon Jun 28 18:02:04 2010 +0200
@@ -0,0 +1,73 @@
+#!/bin/bash
+
+ZONE_DIR="/etc/bind/master"
+ZSKLIVE=60 # ZSK-Schluessellebensdauer in Tagen
+
+function TEST_ZSK { # prueft ob es einen ZSK gibt
+ for DOMAIN in $ZONE_DIR/*
+ do
+ test -f $DOMAIN/index.zsk || echo ${DOMAIN##/*/}
+ done
+}
+
+function TEST_KSK { # prueft ob es einen KSK gibt
+ for DOMAIN in $ZONE_DIR/*
+ do
+ test -f $DOMAIN/index.ksk || echo ${DOMAIN##/*/}
+ done
+}
+
+function TEST_ZSK_TIME { # prueft ob der ZSK abgelaufen ist
+ for DOMAIN in $ZONE_DIR/*
+ do
+ STARTTIME=`ls $DOMAIN/index.zsk -l --time-style=+%s | cut -d' ' -f6 2>/dev/null`
+ ENDTIME=$[STARTTIME + $[ZSKLIVE * 86400]]
+ NOWTIME=`date +%s`
+
+ if [ $ENDTIME -le $NOWTIME ]
+ then
+ echo ${DOMAIN##/*/}
+ fi
+ done
+}
+
+
+VAR_ZSK_TIME=`TEST_ZSK_TIME`
+VAR_ZSK=`TEST_ZSK`
+VAR_KSK=`TEST_KSK`
+
+
+for NEW_ZSK_ZONE in $VAR_ZSK $VAR_ZSK_TIME # Erstellt ZSK
+do
+ cd $ZONE_DIR/$NEW_ZSK_ZONE
+ echo "erzeugt zsk fuer" $NEW_ZSK_ZONE
+ dnssec-keygen -a RSASHA1 -b 512 -n ZONE $NEW_ZSK_ZONE >> index.zsk
+ INDEX_ZSK=$( tail -n2 index.zsk )
+ echo $INDEX_ZSK | fmt -w1 > index.zsk
+done
+
+for NEW_KSK_ZONE in $VAR_KSK # Erstellt KSK
+do
+ cd $ZONE_DIR/$NEW_KSK_ZONE
+ echo "erzeugt ksk fuer" $NEW_KSK_ZONE
+ dnssec-keygen -a RSASHA1 -b 2048 -f KSK -n ZONE $NEW_KSK_ZONE >> index.ksk
+ INDEX_KSK=$( tail -n2 index.ksk )
+ echo $INDEX_KSK | fmt -w1 > index.ksk
+done
+
+
+
+for ZONE in $VAR_ZSK $VAR_KSK $VAR_ZSKTIME
+do
+ cd $ZONE_DIR/$ZONE
+
+ #loescht alle Schluessel die nicht in der indexdatei stehen
+ rm $(ls K*[key,private] | grep -v "`cat index.zsk`" | grep -v "`cat index.ksk`") 2> /dev/null
+
+ #erzeugt ein backup und entfernt alle schluessel aus der zonedatei
+ mv $ZONE $ZONE.old
+ grep -v 'DNSKEY' $ZONE.old >> $ZONE
+
+ #fuegt die existirenden schluessel in die zonedatei ein
+ cat K$ZONE.*key >> $ZONE
+done