| 
     1 #!/bin/bash  | 
         | 
     2   | 
         | 
     3 test $# -lt 1 && echo "SYNOPSIS: mkseckey domainname" && exit 1  | 
         | 
     4   | 
         | 
     5 # durchgang fuer jede eingabe  | 
         | 
     6 for DOMAIN in $@  | 
         | 
     7 do  | 
         | 
     8 	#konfiguration  | 
         | 
     9 	ZONE_DIR=/etc/bind/master  | 
         | 
    10 	ZONE_NAME=`idn --quiet $DOMAIN`  | 
         | 
    11 	  | 
         | 
    12 	# pruefe die existens des ordners der zone  | 
         | 
    13 	# und beende den durchlauf bei negativer pruefung  | 
         | 
    14 	if [ -d $ZONE_DIR/$ZONE_NAME ]  | 
         | 
    15 	then  | 
         | 
    16 		cd $ZONE_DIR/$ZONE_NAME/  | 
         | 
    17 		  | 
         | 
    18 		test -f index.ksk || touch index.ksk  | 
         | 
    19 		test -f index.zsk || touch index.zsk  | 
         | 
    20 		  | 
         | 
    21 		#erzeugt die schluessel  | 
         | 
    22 		#echo "erzeugt zsk fuer" $DOMAIN  | 
         | 
    23 		#dnssec-keygen -a RSASHA1 -b 512 -n ZONE $ZONE_NAME >> index.zsk  | 
         | 
    24 		echo "erzeugt ksk fuer" $DOMAIN  | 
         | 
    25 		dnssec-keygen -a RSASHA1 -b 1024 -n ZONE -f KSK $ZONE_NAME >> index.ksk  | 
         | 
    26 		  | 
         | 
    27 		#aktuallisiert die schluesselindexdateien  | 
         | 
    28 		# INDEX_ZSK=$( tail -n2 index.zsk ) ; echo $INDEX_ZSK | fmt -w1 > index.zsk  | 
         | 
    29 		INDEX_KSK=$( tail -n2 index.ksk ) ; echo $INDEX_KSK | fmt -w1 > index.ksk  | 
         | 
    30 		  | 
         | 
    31 		#loesche alle Schluessel die nicht in der indexdatei stehen  | 
         | 
    32 		rm $(ls K*[key,private] | grep -v "`cat index.zsk`" | grep -v "`cat index.ksk`") 2> /dev/null  | 
         | 
    33 		  | 
         | 
    34 		#erzeugt ein backup und entfernt alle schluessel aus der zonedatei  | 
         | 
    35 		mv $ZONE_NAME $ZONE_NAME.old  | 
         | 
    36 		grep -v 'DNSKEY' $ZONE_NAME.old >> $ZONE_NAME  | 
         | 
    37 		  | 
         | 
    38 		#fuegt die schluessel in die zonedatei ein  | 
         | 
    39 		cat K$ZONE_NAME.*key >>$ZONE_NAME  | 
         | 
    40 		  | 
         | 
    41 		#signiert die zonedatei - erzeugt zone.signed  | 
         | 
    42 		dnssec-signzone $ZONE_NAME  | 
         | 
    43 	else   | 
         | 
    44 		echo "zone $ZONE_NAME nicht gefunden"  | 
         | 
    45 	fi  | 
         | 
    46 	  | 
         | 
    47 done  | 
         | 
    48   | 
         | 
    49   | 
         | 
    50 exit 0  |