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 |