creatkey
changeset 0 51d248a512a1
child 5 960f5e7f78eb
equal deleted inserted replaced
-1:000000000000 0:51d248a512a1
       
     1 #!/bin/bash
       
     2 
       
     3 while getopts ":k" opt
       
     4 do
       
     5         case $opt in
       
     6         k )	K_OPTION="1";;
       
     7         \? )	echo "SYNOPSIS: creatkey [-k] zonename"
       
     8 		exit 1
       
     9         esac			# prueft ob -k als option angegeben wurde
       
    10 done
       
    11 
       
    12 test $# -lt $[$K_OPTION+1] && echo "SYNOPSIS: creatkey [-k] zonename" && exit 1
       
    13 					# prueft ob eine es eine domain gibt
       
    14 
       
    15 # durchgang fuer jede eingabe
       
    16 for DOMAIN in $@
       
    17 do
       
    18 
       
    19 	ZONE_DIR=/etc/bind/master	# konfiguration
       
    20 	ZONE_NAME=`idn --quiet $DOMAIN`
       
    21 	
       
    22 	if [ -d $ZONE_DIR/$ZONE_NAME ]		# prueft die existens des zoneordners
       
    23 	then
       
    24 		cd $ZONE_DIR/$ZONE_NAME/
       
    25 		
       
    26 		test -f index.ksk || touch index.ksk
       
    27 		test -f index.zsk || touch index.zsk
       
    28 		
       
    29 		if test		# erzeugt die schluessel und erstelt eine indexdatei
       
    30 		then
       
    31 			echo "erzeugt zsk fuer" $DOMAIN
       
    32 			dnssec-keygen -a RSASHA1 -b 512 -n ZONE $ZONE_NAME >> index.zsk
       
    33 			INDEX_ZSK=$( tail -n2 index.zsk ) ; echo $INDEX_ZSK | fmt -w1 > index.zsk
       
    34 		else
       
    35 			echo "erzeugt ksk fuer" $DOMAIN
       
    36 			dnssec-keygen -a RSASHA1 -b 1024 -n ZONE -f KSK $ZONE_NAME >> index.ksk
       
    37 			INDEX_KSK=$( tail -n2 index.ksk ) ; echo $INDEX_KSK | fmt -w1 > index.ksk
       
    38 		fi
       
    39 		
       
    40 		#loesche alle Schluessel die nicht in der indexdatei stehen
       
    41 		rm $(ls K*[key,private] | grep -v "`cat index.zsk`" | grep -v "`cat index.ksk`") 2> /dev/null
       
    42 		
       
    43 		#erzeugt ein backup und entfernt alle schluessel aus der zonedatei
       
    44 		mv $ZONE_NAME $ZONE_NAME.old
       
    45 		grep -v 'DNSKEY' $ZONE_NAME.old >> $ZONE_NAME
       
    46 		
       
    47 		#fuegt die schluessel in die zonedatei ein
       
    48 		cat K$ZONE_NAME.*key >>$ZONE_NAME
       
    49 		
       
    50 		#signiert die zonedatei - erzeugt zone.signed
       
    51 		dnssec-signzone $ZONE_NAME
       
    52 	else 
       
    53 		echo "zone $ZONE_NAME nicht gefunden"
       
    54 	fi
       
    55 	
       
    56 done
       
    57 
       
    58 
       
    59 exit 0