dnssec-creatkey
changeset 12 5786a8b53c78
parent 11 5509b98ea064
child 13 4844031fc55e
equal deleted inserted replaced
11:5509b98ea064 12:5786a8b53c78
     1 #!/bin/bash
     1 #!/bin/bash
     2 set -e
     2 set -e
     3 
     3 
       
     4 #import aus der dnstools.conf
     4 source dnstools.conf
     5 source dnstools.conf
     5 
       
     6 master_dir=$MASTER_DIR
     6 master_dir=$MASTER_DIR
     7 key_counter_end=$KEY_COUNTER_END
     7 key_counter_end=$KEY_COUNTER_END
     8 
     8 
     9 function test_zsk_new {			# prueft ob es einen ZSK gibt
     9 
       
    10 # gibt alle zonen ohne zsk in die standard-ausgabe
       
    11 function test_zsk_new {
    10 	for zone in $master_dir/*
    12 	for zone in $master_dir/*
    11 	do
    13 	do
    12 		test -f $zone/${zone##*/}.signed || continue
    14 		test -f $zone/${zone##*/}.signed || continue
    13 		test -f $zone/.index.zsk || echo ${zone##/*/}
    15 		test -f $zone/.index.zsk || echo ${zone##/*/}
    14 	done
    16 	done
    15 }
    17 }
    16 
    18 
    17 function test_ksk_new {			# prueft ob es einen KSK gibt
    19 
       
    20 # gibt alle zonen ohne ksk in die standard-ausgabe
       
    21 function test_ksk_new {
    18 	for zone in $master_dir/*
    22 	for zone in $master_dir/*
    19 	do
    23 	do
    20 		test -f $zone/${zone##*/}.signed || continue
    24 		test -f $zone/${zone##*/}.signed || continue
    21 		test -f "$zone/.index.ksk" || echo ${zone##/*/}
    25 		test -f "$zone/.index.ksk" || echo ${zone##/*/}
    22 	done
    26 	done
    23 }
    27 }
    24 
    28 
       
    29 
       
    30 # gibt alle zonen mitabgelaufenen keycounter in die standardausgabe
    25 function test_zsk_time {		# prueft den keycounter
    31 function test_zsk_time {		# prueft den keycounter
    26 	for zone in $master_dir/*
    32 	for zone in $master_dir/*
    27 	do
    33 	do
    28 		test -f $zone/${zone##*/}.signed || continue
    34 		test -f $zone/${zone##*/}.signed || continue
    29 		key_counter_end=$1
       
    30 		test -f $zone/keycounter || echo 0 > $zone/keycounter
    35 		test -f $zone/keycounter || echo 0 > $zone/keycounter
    31 		key_counter=`< $zone/keycounter`
    36 		key_counter=`< $zone/keycounter`
    32 	
    37 	
    33 		if [ $key_counter_end -le $key_counter ]
    38 		if [ $key_counter_end -le $key_counter ]
    34 		then
    39 		then
    35 			echo ${zone##/*/} 
    40 			echo ${zone##/*/} 
    36 		fi
    41 		fi
    37 	done
    42 	done
    38 }
    43 }
    39 
    44 
    40 #prüft die eingegebnen domains
    45 
       
    46 #prüft die eingegebnen domains und erstellt eine liste
    41 for utf8domain in $@
    47 for utf8domain in $@
    42 do
    48 do
    43         domain=$(idn --quiet "$utf8domain")
    49         domain=$(idn --quiet "$utf8domain")
    44 
    50 
    45         if [ -d $master_dir/$domain ]
    51         if [ -d $master_dir/$domain ]
    46         then
    52         then
    47                 zsk_aenderung="$zsk_aenderung $domain"
    53                 zsk_manuell="$zsk_manuell $domain"
    48         else
    54         else
    49                 echo $domain ist keine verwaltete Zone
    55                 echo $domain ist keine verwaltete Zone
    50         fi
    56         fi
    51 done
    57 done
    52 
    58 
    53 
    59 
    54 zsk_time=`test_zsk_time $key_counter_end`
    60 # übergibt die standard-ausgabe aus den funktionen in listen
       
    61 zsk_time=`test_zsk_time`
    55 zsk_new=`test_zsk_new`
    62 zsk_new=`test_zsk_new`
    56 ksk_new=`test_ksk_new`
    63 ksk_new=`test_ksk_new`
    57 
    64 
    58 
    65 
    59 for NEW_ZSK_ZONE in $zsk_time $zsk_aenderung	# Erstellt ZSK
    66 # erstellt zsks
       
    67 for NEW_ZSK_ZONE in $zsk_time $zsk_manuell
    60 do
    68 do
    61 	cd $master_dir/$NEW_ZSK_ZONE
    69 	cd $master_dir/$NEW_ZSK_ZONE
    62 	echo "erzeugt zsk fuer" $NEW_ZSK_ZONE
    70 	echo "erzeugt zsk fuer" $NEW_ZSK_ZONE
    63 	dnssec-keygen -a RSASHA1 -b 512 -n ZONE $NEW_ZSK_ZONE >> .index.zsk
    71 	dnssec-keygen -a RSASHA1 -b 512 -n ZONE $NEW_ZSK_ZONE >> .index.zsk
    64 	INDEX_ZSK=$( tail -n2 .index.zsk )
    72 	INDEX_ZSK=$( tail -n2 .index.zsk )
    65 	echo $INDEX_ZSK | fmt -w1 > .index.zsk
    73 	echo $INDEX_ZSK | fmt -w1 > .index.zsk
    66 
    74 
    67 	echo 0 > keycounter	
    75 	echo 0 > keycounter	
    68 done
    76 done
    69 
    77 
    70 for NEW_KSK_ZONE in $zsk_aenderung		# Erstellt KSK
    78 
       
    79 # erstellt ksks
       
    80 for NEW_KSK_ZONE in $zsk_manuell
    71 do	
    81 do	
    72 	cd $master_dir/$NEW_KSK_ZONE
    82 	cd $master_dir/$NEW_KSK_ZONE
    73 	echo "erzeugt ksk fuer" $NEW_KSK_ZONE
    83 	echo "erzeugt ksk fuer" $NEW_KSK_ZONE
    74 	dnssec-keygen -a RSASHA1 -b 2048 -f KSK -n ZONE $NEW_KSK_ZONE >> .index.ksk
    84 	dnssec-keygen -a RSASHA1 -b 2048 -f KSK -n ZONE $NEW_KSK_ZONE >> .index.ksk
    75 	INDEX_KSK=$( tail -n2 .index.ksk )
    85 	INDEX_KSK=$( tail -n2 .index.ksk )
    76 	echo $INDEX_KSK | fmt -w1 > .index.ksk
    86 	echo $INDEX_KSK | fmt -w1 > .index.ksk
    77 done
    87 done
    78 
    88 
    79 
    89 
    80 
    90 # fuegt die schluessel in die zone-datei
    81 for ZONE in $zsk_time $zsk_new $ksk_new $zsk_aenderung
    91 for zone in $zsk_time $zsk_manuell
    82 do
    92 do
    83 	cd $master_dir/$ZONE
    93 	cd $master_dir/$zone
    84 
    94 
    85 	#loescht alle Schluessel die nicht in der indexdatei stehen
    95 	#loescht alle Schluessel die nicht in der indexdatei stehen
    86 	rm $(ls K*[key,private] | grep -v "`cat .index.zsk`" | grep -v "`cat .index.ksk`") 2> /dev/null
    96 	rm $(ls K*[key,private] | grep -v "`cat .index.zsk`" | grep -v "`cat .index.ksk`") 2>/dev/null || true
    87 
    97 
    88 	#erzeugt ein backup und entfernt alle schluessel aus der zonedatei
    98 	#erzeugt ein backup und entfernt alle schluessel aus der zonedatei
    89 	mv $ZONE $ZONE.old
    99 	mv $zone .$zone
    90 	grep -v 'DNSKEY' $ZONE.old >> $ZONE
   100 	grep -v 'DNSKEY' .$zone >> $zone
    91 
   101 
    92 	#fuegt die existirenden schluessel in die zonedatei ein
   102 	#fuegt die existirenden schluessel in die zonedatei ein
    93 	cat K$ZONE.*key >> $ZONE
   103 	cat K$zone.*key >> $zone
    94 done
   104 done