dnssec-creatkey
changeset 8 a1eefce2bd5e
parent 6 920c1a51ba0e
child 9 c45415af9a4b
equal deleted inserted replaced
7:9cad6f1c5505 8:a1eefce2bd5e
     1 #!/bin/bash
     1 #!/bin/bash
       
     2 source dnstools.conf
     2 
     3 
     3 ZONE_DIR="/etc/bind/master"
     4 master_dir=$MASTER_DIR
     4 ZSKLIVE=60			# ZSK-Schluessellebensdauer in Tagen
     5 key_counter_end=$KEY_COUNTER_END
       
     6 eingabe=$@
     5 
     7 
     6 function TEST_ZSK {			# prueft ob es einen ZSK gibt
     8 function test_zsk_aenderung {
     7 	for DOMAIN in $ZONE_DIR/*
     9 	for domain in $eingabe
     8 	do
    10 	do
     9 		test -f $DOMAIN/index.zsk || echo ${DOMAIN##/*/}
    11 		test -d $master_dir/$domain && echo $domain
    10 	done
    12 	done
    11 }
    13 }
    12 
    14 
    13 function TEST_KSK {			# prueft ob es einen KSK gibt
    15 
    14 	for DOMAIN in $ZONE_DIR/*
    16 function test_zsk_new {			# prueft ob es einen ZSK gibt
       
    17 	for zone in $master_dir/*
    15 	do
    18 	do
    16 		test -f $DOMAIN/index.ksk || echo ${DOMAIN##/*/}
    19 		test -f $zone/index.zsk || echo ${zone##/*/}
    17 	done
    20 	done
    18 }
    21 }
    19 
    22 
    20 function TEST_ZSK_TIME {		# prueft ob der ZSK abgelaufen ist
    23 function test_ksk_new {			# prueft ob es einen KSK gibt
    21 	for DOMAIN in $ZONE_DIR/*
    24 	for zone in $master_dir/*
    22 	do
    25 	do
    23 		STARTTIME=`ls $DOMAIN/index.zsk -l --time-style=+%s | cut -d' ' -f6 2>/dev/null`
    26 		test -f $zone/index.ksk || echo ${zone##/*/}
    24 		ENDTIME=$[STARTTIME + $[ZSKLIVE * 86400]]
    27 	done
    25 		NOWTIME=`date +%s`
    28 }
    26 
    29 
    27 		if [ $ENDTIME -le $NOWTIME ]
    30 function test_zsk_time {		# prueft den keycounter
       
    31 	for zone in $master_dir/*
       
    32 	do
       
    33 		key_counter_end=$1
       
    34 		test -f $zone/keycounter || echo 0 > $zone/keycounter
       
    35 		key_counter=`< $zone/keycounter`
       
    36 	
       
    37 		if [ $key_counter_end -le $key_counter ]
    28 		then
    38 		then
    29 			echo ${DOMAIN##/*/} 
    39 			echo ${zone##/*/} 
    30 		fi
    40 		fi
    31 	done
    41 	done
    32 }
    42 }
    33 
    43 
    34 
    44 zsk_aenderung=`test_zsk_aenderung`
    35 VAR_ZSK_TIME=`TEST_ZSK_TIME`
    45 zsk_time=`test_zsk_time $key_counter_end`
    36 VAR_ZSK=`TEST_ZSK`
    46 zsk_new=`test_zsk_new`
    37 VAR_KSK=`TEST_KSK`
    47 ksk_new=`test_ksk_new`
    38 
    48 
    39 
    49 
    40 for NEW_ZSK_ZONE in $VAR_ZSK $VAR_ZSK_TIME	# Erstellt ZSK
    50 for NEW_ZSK_ZONE in $zsk_new $zsk_time $zsk_aenderung	# Erstellt ZSK
    41 do
    51 do
    42 	cd $ZONE_DIR/$NEW_ZSK_ZONE
    52 	cd $master_dir/$NEW_ZSK_ZONE
    43 	echo "erzeugt zsk fuer" $NEW_ZSK_ZONE
    53 	echo "erzeugt zsk fuer" $NEW_ZSK_ZONE
    44 	dnssec-keygen -a RSASHA1 -b 512 -n ZONE $NEW_ZSK_ZONE >> index.zsk
    54 	dnssec-keygen -a RSASHA1 -b 512 -n ZONE $NEW_ZSK_ZONE >> index.zsk
    45 	INDEX_ZSK=$( tail -n2 index.zsk )
    55 	INDEX_ZSK=$( tail -n2 index.zsk )
    46 	echo $INDEX_ZSK | fmt -w1 > index.zsk
    56 	echo $INDEX_ZSK | fmt -w1 > index.zsk
       
    57 
       
    58 	echo 0 > keycounter	
    47 done
    59 done
    48 
    60 
    49 for NEW_KSK_ZONE in $VAR_KSK		# Erstellt KSK
    61 for NEW_KSK_ZONE in $ksk_new		# Erstellt KSK
    50 do	
    62 do	
    51 	cd $ZONE_DIR/$NEW_KSK_ZONE
    63 	cd $master_dir/$NEW_KSK_ZONE
    52 	echo "erzeugt ksk fuer" $NEW_KSK_ZONE
    64 	echo "erzeugt ksk fuer" $NEW_KSK_ZONE
    53 	dnssec-keygen -a RSASHA1 -b 2048 -f KSK -n ZONE $NEW_KSK_ZONE >> index.ksk
    65 	dnssec-keygen -a RSASHA1 -b 2048 -f KSK -n ZONE $NEW_KSK_ZONE >> index.ksk
    54 	INDEX_KSK=$( tail -n2 index.ksk )
    66 	INDEX_KSK=$( tail -n2 index.ksk )
    55 	echo $INDEX_KSK | fmt -w1 > index.ksk
    67 	echo $INDEX_KSK | fmt -w1 > index.ksk
    56 done
    68 done
    57 
    69 
    58 
    70 
    59 
    71 
    60 for ZONE in $VAR_ZSK $VAR_KSK $VAR_ZSKTIME
    72 for ZONE in $zsk_time $zsk_new $ksk_new $zsk_aenderung
    61 do
    73 do
    62 	cd $ZONE_DIR/$ZONE
    74 	cd $master_dir/$ZONE
    63 
    75 
    64 	#loescht alle Schluessel die nicht in der indexdatei stehen
    76 	#loescht alle Schluessel die nicht in der indexdatei stehen
    65 	rm $(ls K*[key,private] | grep -v "`cat index.zsk`" | grep -v "`cat index.ksk`") 2> /dev/null
    77 	rm $(ls K*[key,private] | grep -v "`cat index.zsk`" | grep -v "`cat index.ksk`") 2> /dev/null
    66 
    78 
    67 	#erzeugt ein backup und entfernt alle schluessel aus der zonedatei
    79 	#erzeugt ein backup und entfernt alle schluessel aus der zonedatei