diff -r 000000000000 -r 51d248a512a1 creatkey --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/creatkey Fri Jun 18 15:36:13 2010 +0200 @@ -0,0 +1,59 @@ +#!/bin/bash + +while getopts ":k" opt +do + case $opt in + k ) K_OPTION="1";; + \? ) echo "SYNOPSIS: creatkey [-k] zonename" + exit 1 + esac # prueft ob -k als option angegeben wurde +done + +test $# -lt $[$K_OPTION+1] && echo "SYNOPSIS: creatkey [-k] zonename" && exit 1 + # prueft ob eine es eine domain gibt + +# durchgang fuer jede eingabe +for DOMAIN in $@ +do + + ZONE_DIR=/etc/bind/master # konfiguration + ZONE_NAME=`idn --quiet $DOMAIN` + + if [ -d $ZONE_DIR/$ZONE_NAME ] # prueft die existens des zoneordners + then + cd $ZONE_DIR/$ZONE_NAME/ + + test -f index.ksk || touch index.ksk + test -f index.zsk || touch index.zsk + + if test # erzeugt die schluessel und erstelt eine indexdatei + then + echo "erzeugt zsk fuer" $DOMAIN + dnssec-keygen -a RSASHA1 -b 512 -n ZONE $ZONE_NAME >> index.zsk + INDEX_ZSK=$( tail -n2 index.zsk ) ; echo $INDEX_ZSK | fmt -w1 > index.zsk + else + echo "erzeugt ksk fuer" $DOMAIN + dnssec-keygen -a RSASHA1 -b 1024 -n ZONE -f KSK $ZONE_NAME >> index.ksk + INDEX_KSK=$( tail -n2 index.ksk ) ; echo $INDEX_KSK | fmt -w1 > index.ksk + fi + + #loesche 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_NAME $ZONE_NAME.old + grep -v 'DNSKEY' $ZONE_NAME.old >> $ZONE_NAME + + #fuegt die schluessel in die zonedatei ein + cat K$ZONE_NAME.*key >>$ZONE_NAME + + #signiert die zonedatei - erzeugt zone.signed + dnssec-signzone $ZONE_NAME + else + echo "zone $ZONE_NAME nicht gefunden" + fi + +done + + +exit 0