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