|
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 done |
|
11 |
|
12 test $# -lt $[$K_OPTION+1] && echo "SYNOPSIS: creatkey [-k] zonename" && exit 1 |
|
13 # prueft ob eine es eine domain gibt |
|
14 |
|
15 # durchgang fuer jede eingabe |
|
16 for DOMAIN in $@ |
|
17 do |
|
18 |
|
19 ZONE_DIR=/etc/bind/master # konfiguration |
|
20 ZONE_NAME=`idn --quiet $DOMAIN` |
|
21 |
|
22 if [ -d $ZONE_DIR/$ZONE_NAME ] # prueft die existens des zoneordners |
|
23 then |
|
24 cd $ZONE_DIR/$ZONE_NAME/ |
|
25 |
|
26 test -f index.ksk || touch index.ksk |
|
27 test -f index.zsk || touch index.zsk |
|
28 |
|
29 if test # erzeugt die schluessel und erstelt eine indexdatei |
|
30 then |
|
31 echo "erzeugt zsk fuer" $DOMAIN |
|
32 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 |
|
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 |
|
39 |
|
40 #loesche 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 |
|
42 |
|
43 #erzeugt ein backup und entfernt alle schluessel aus der zonedatei |
|
44 mv $ZONE_NAME $ZONE_NAME.old |
|
45 grep -v 'DNSKEY' $ZONE_NAME.old >> $ZONE_NAME |
|
46 |
|
47 #fuegt die schluessel in die zonedatei ein |
|
48 cat K$ZONE_NAME.*key >>$ZONE_NAME |
|
49 |
|
50 #signiert die zonedatei - erzeugt zone.signed |
|
51 dnssec-signzone $ZONE_NAME |
|
52 else |
|
53 echo "zone $ZONE_NAME nicht gefunden" |
|
54 fi |
|
55 |
|
56 done |
|
57 |
|
58 |
|
59 exit 0 |