dnssec-creatkey
changeset 21 6715f8f9d04c
parent 20 5b52190d8750
child 22 7229d1c95ea8
equal deleted inserted replaced
20:5b52190d8750 21:6715f8f9d04c
     2 
     2 
     3 use strict;
     3 use strict;
     4 
     4 
     5 my $master_dir="/etc/bind/master";	# verzeichnis fuer bind
     5 my $master_dir="/etc/bind/master";	# verzeichnis fuer bind
     6 my $key_counter_end="10";		# ablauf des schluessels
     6 my $key_counter_end="10";		# ablauf des schluessels
     7 my @zones = `ls $master_dir`;	# alle verwalteten zonen
       
     8 my @change;			# liste abgelaufener zonen
     7 my @change;			# liste abgelaufener zonen
     9 my @manu;			# liste manuell eingegebener zonen aus ARGV
     8 my @manu;			# liste manuell eingegebener zonen aus ARGV
    10 my @index;
     9 my @index;
    11 my $zone;
    10 my $zone;
    12 my $keyname;
    11 my $keyname;
    13 
    12 
    14 # prueft ob eingaben in ARGV domains sind und gibt sie in die liste @manu
    13 # prueft ob eingaben in ARGV domains sind und gibt sie in die liste @manu
    15 foreach (@ARGV) {
    14 for (@ARGV) {
    16 	chomp ($zone = `idn --quiet "$_"`);
    15 	chomp ($zone = `idn --quiet "$_"`);
    17 
    16 
    18 	if (-e "$master_dir/$zone") {
    17 	if (-e "$master_dir/$zone") {
    19 		push (@manu, $zone);
    18 		push (@manu, $zone);
    20 	} else {
    19 	} else {
    21 		print " $zone ist keine verwaltete zone \n ";
    20 		print " $zone ist keine verwaltete zone \n ";
    22 	}
    21 	}
    23 }
    22 }
    24 	
    23 	
    25 # gibt alle zonen mit abgelaufenen keycounter in die liste @change
    24 # gibt alle zonen mit abgelaufenen keycounter in die liste @change
    26 foreach (@zones) {
    25 for (<$master_dir/*>) {
    27 	chomp ($zone = $_);
    26 	chomp ($zone = $_);
    28 	my $key;
    27 	my $key;
    29 
    28 
    30 	if (-e "$master_dir/$zone/.keycounter") {
    29 	if (-e "$zone/.keycounter") {
    31 
    30 
    32 		open (KEY, "$master_dir/$zone/.keycounter");
    31 		open (KEY, "$zone/.keycounter");
    33 		$key = <KEY>;
    32 		$key = <KEY>;
    34 		close (KEY);
    33 		close (KEY);
    35 
    34 
    36 		if ($key_counter_end < $key) {
    35 		if ($key_counter_end < $key) {
       
    36 			$zone =~ s#($master_dir/)(.*)#$2#;
    37 			push (@change, $zone);
    37 			push (@change, $zone);
    38 		}
    38 		}
    39 	}
    39 	}
    40 }
    40 }
    41 
    41 
    42 #erzeugt zsks
    42 #erzeugt zsks
    43 foreach (@change, @manu) {
    43 for (@change, @manu) {
    44 	$zone = $_;
    44 	$zone = $_;
    45 
    45 
    46 	chdir "$master_dir/$zone" or die "chdir nach / nicht moeglich: $1";
    46 	chdir "$master_dir/$zone" or die "chdir nach / nicht moeglich: $1";
    47 	$keyname = `dnssec-keygen -a RSASHA1 -b 512 -n ZONE $zone`;
    47 	$keyname = `dnssec-keygen -a RSASHA1 -b 512 -n ZONE $zone`;
    48 
    48 
    70 	print KC "0";
    70 	print KC "0";
    71 	close (KC);
    71 	close (KC);
    72 }
    72 }
    73 
    73 
    74 #erzeugt ksks
    74 #erzeugt ksks
    75 foreach (@manu) {
    75 for (@manu) {
    76 	$zone = $_;
    76 	$zone = $_;
    77 
    77 
    78 	chdir "$master_dir/$zone" or die "chdir nach / nicht moeglich: $1";
    78 	chdir "$master_dir/$zone" or die "chdir nach / nicht moeglich: $1";
    79 	$keyname = `dnssec-keygen -a RSASHA1 -b 2048 -f KSK -n ZONE $zone`;
    79 	$keyname = `dnssec-keygen -a RSASHA1 -b 2048 -f KSK -n ZONE $zone`;
    80 
    80 
   100 }
   100 }
   101 
   101 
   102 
   102 
   103 # loescht alle unbenoetigten schluessel, fuegt die schluessel in
   103 # loescht alle unbenoetigten schluessel, fuegt die schluessel in
   104 # die zone-datei
   104 # die zone-datei
   105 foreach (@change, @manu) {
   105 for (@change, @manu) {
   106 	$zone = $_;
   106 	$zone = $_;
   107 	my @old_zone_content = ();
   107 	my @old_zone_content = ();
   108 	my @new_zone_content = ();
   108 	my @new_zone_content = ();
   109 	my @keylist = ();
   109 	my @keylist = ();
   110 	my $file = ();
   110 	my $file = ();