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