|
| 1 | +#!/bin/bash |
| 2 | +source {dnssec_conffile} |
| 3 | +domain="${1::-1}" |
| 4 | + |
| 5 | +mysqlcheck=`mysql -u $dbuser --password=$dbpass -h $dbhost -Bse "use $dbase; show tables;" | wc -c` |
| 6 | +if [ "$mysqlcheck" = 0 ];then |
| 7 | + echo "$0 could not connect to database" |
| 8 | + exit 0 |
| 9 | +fi |
| 10 | +mysqlcheck=`mysql -u $dbuser --password=$dbpass -h $dbhost -Bse "use $dbase; select * from dns_soa where dnssec_initialized='Y' and origin='$domain.';" | wc -c` |
| 11 | +if [ "$mysqlcheck" -gt 1 ];then |
| 12 | + echo "$domain seems to be initialized. If that is wrong correct dnssec_initialized in dns_soa table" |
| 13 | +fi |
| 14 | +cd $bindpath |
| 15 | + |
| 16 | +if [ ! $domain = "" ];then |
| 17 | + if [ ! -f $filespre$domain ]; then |
| 18 | + echo "$domain zone file ($filespre$domain) does not exist" |
| 19 | + exit 0 |
| 20 | + else |
| 21 | + if [ -f dsset-$domain. ];then |
| 22 | + echo "dnssec keys for $domain already exists!" |
| 23 | + exit 0 |
| 24 | + else |
| 25 | + echo "Creating keys for $domain" |
| 26 | + dnssec-keygen -a NSEC3RSASHA1 -b 2048 -n ZONE $domain |
| 27 | + dnssec-keygen -f KSK -a NSEC3RSASHA1 -b 4096 -n ZONE $domain |
| 28 | + for key in `ls K$domain*.key`; do |
| 29 | + echo "\$INCLUDE $bindpath/$key">> $filespre$domain |
| 30 | + done |
| 31 | + dnssec-signzone -A -3 $(head -c 1000 /dev/random | sha1sum | cut -b 1-16) -N INCREMENT -o $domain -t $filespre$domain |
| 32 | + fi |
| 33 | +fi |
| 34 | +serial=`cat $bindpath/$filespre$domain |grep "serial," |awk {' print $domain '}` |
| 35 | +echo "" |
| 36 | +dnssechelp=`head -1 $bindpath/dsset-$domain.` |
| 37 | +dnssecid=`echo $dnssechelp | awk {' print $4 '}` |
| 38 | +dnssecalg=`echo $dnssechelp | awk {' print $5 '}` |
| 39 | +dnssecdt=`echo $dnssechelp | awk {' print $6 '}` |
| 40 | +dnssecd=`echo $dnssechelp | awk {' print $7 '}` |
| 41 | +echo "DS Record 1:">/tmp/.dnssec-$domain |
| 42 | +echo "Key Tag/ID: $dnssecid">>/tmp/.dnssec-$domain |
| 43 | +echo "Algorithm: $dnssecalg">>/tmp/.dnssec-$domain |
| 44 | +echo "Digest/HASH Type: $dnssecdt">>/tmp/.dnssec-$domain |
| 45 | +echo "Digest/HASH: $dnssecd">>/tmp/.dnssec-$domain |
| 46 | + |
| 47 | +dns2sechelp=`tail -n 1 $bindpath/dsset-$domain.` |
| 48 | +dns2secid=`echo $dns2sechelp | awk {' print $4 '}` |
| 49 | +dns2secalg=`echo $dns2sechelp | awk {' print $5 '}` |
| 50 | +dns2secdt=`echo $dns2sechelp | awk {' print $6 '}` |
| 51 | +dns2secd=`echo $dns2sechelp | awk {' print $7""$8 '}` |
| 52 | +echo "">>/tmp/.dnssec-$domain |
| 53 | +echo "DS Record 2:">>/tmp/.dnssec-$domain |
| 54 | +echo "Key Tag/ID: $dns2secid">>/tmp/.dnssec-$domain |
| 55 | +echo "Algorithm: $dns2secalg">>/tmp/.dnssec-$domain |
| 56 | +echo "Digest/HASH Type: $dns2secdt">>/tmp/.dnssec-$domain |
| 57 | +echo "Digest/HASH: $dns2secd">>/tmp/.dnssec-$domain |
| 58 | + |
| 59 | +echo "">>/tmp/.dnssec-$domain |
| 60 | +echo "In DS-Record format:">>/tmp/.dnssec-$domain |
| 61 | +cat $bindpath/dsset-$domain.>>/tmp/.dnssec-$domain |
| 62 | + |
| 63 | +echo "">>/tmp/.dnssec-$domain |
| 64 | +echo "DNSKEY-Records:">>/tmp/.dnssec-$domain |
| 65 | +cat $bindpath/K$domain.+*.key>>/tmp/.dnssec-$domain |
| 66 | + |
| 67 | +#mysql -u $dbuser --password=$dbpass -h $dbhost -Bse "use $dbase; insert into dnssec_domains set domain='$domain', active='1', serial='$serial', ds1id='$dnssecid', ds1alg='$dnssecalg', ds1htype='$dnssecdt', ds1hash='$dnssecd', ds2id='$dns2secid', ds2alg='$dns2secalg', ds2htype='$dns2secdt', ds2hash='$dns2secd', created=now() ; UPDATE dns_soa SET dnssec_initialized='Y' WHERE origin='$domain.'" |
| 68 | +mysql -u $dbuser --password=$dbpass -h $dbhost -Bse "use $dbase; UPDATE dns_soa SET dnssec_info='`cat /tmp/.dnssec-$domain`', dnssec_initialized='Y' WHERE origin='$domain.'" |
| 69 | +rm /tmp/.dnssec-$domain |
| 70 | + |
| 71 | +else |
| 72 | + echo "usage: dnssec-create.sh <domain.tld>" |
| 73 | +fi |
| 74 | +cd $curpath |
0 commit comments