|
1 #!/bin/bash |
|
2 |
|
3 test $# -lt 1 && echo "SYNOPSIS: mkseckey domainname" && exit 1 |
|
4 |
|
5 # durchgang fuer jede eingabe |
|
6 for DOMAIN in $@ |
|
7 do |
|
8 #konfiguration |
|
9 ZONE_DIR=/etc/bind/master |
|
10 ZONE_NAME=`idn --quiet $DOMAIN` |
|
11 |
|
12 # pruefe die existens des ordners der zone |
|
13 # und beende den durchlauf bei negativer pruefung |
|
14 if [ -d $ZONE_DIR/$ZONE_NAME ] |
|
15 then |
|
16 cd $ZONE_DIR/$ZONE_NAME/ |
|
17 |
|
18 test -f index.ksk || touch index.ksk |
|
19 test -f index.zsk || touch index.zsk |
|
20 |
|
21 #erzeugt die schluessel |
|
22 #echo "erzeugt zsk fuer" $DOMAIN |
|
23 #dnssec-keygen -a RSASHA1 -b 512 -n ZONE $ZONE_NAME >> index.zsk |
|
24 echo "erzeugt ksk fuer" $DOMAIN |
|
25 dnssec-keygen -a RSASHA1 -b 1024 -n ZONE -f KSK $ZONE_NAME >> index.ksk |
|
26 |
|
27 #aktuallisiert die schluesselindexdateien |
|
28 # INDEX_ZSK=$( tail -n2 index.zsk ) ; echo $INDEX_ZSK | fmt -w1 > index.zsk |
|
29 INDEX_KSK=$( tail -n2 index.ksk ) ; echo $INDEX_KSK | fmt -w1 > index.ksk |
|
30 |
|
31 #loesche alle Schluessel die nicht in der indexdatei stehen |
|
32 rm $(ls K*[key,private] | grep -v "`cat index.zsk`" | grep -v "`cat index.ksk`") 2> /dev/null |
|
33 |
|
34 #erzeugt ein backup und entfernt alle schluessel aus der zonedatei |
|
35 mv $ZONE_NAME $ZONE_NAME.old |
|
36 grep -v 'DNSKEY' $ZONE_NAME.old >> $ZONE_NAME |
|
37 |
|
38 #fuegt die schluessel in die zonedatei ein |
|
39 cat K$ZONE_NAME.*key >>$ZONE_NAME |
|
40 |
|
41 #signiert die zonedatei - erzeugt zone.signed |
|
42 dnssec-signzone $ZONE_NAME |
|
43 else |
|
44 echo "zone $ZONE_NAME nicht gefunden" |
|
45 fi |
|
46 |
|
47 done |
|
48 |
|
49 |
|
50 exit 0 |