Handle hostnames with upper-case letters
[webmin.git] / webmin / setup_ca.cgi
1 #!/usr/local/bin/perl
2 # setup_ca.cgi
3 # Setup a new certificate authority
4
5 require './webmin-lib.pl';
6 &foreign_require("acl", "acl-lib.pl");
7 &ReadParse();
8 &error_setup($text{'ca_err'});
9 $in{'size_def'} || $in{'size'} =~ /^\d+$/ || &error($text{'newkey_esize'});
10
11 &lock_file($ENV{'MINISERV_CONFIG'});
12 &get_miniserv_config(\%miniserv);
13 &setup_ca(\%miniserv) if (!-r $miniserv{'ca'});
14 &lock_file($miniserv{'ca'});
15 $ctemp = &transname();
16 $ktemp = &transname();
17 $outtemp = &transname();
18 %aclconfig = &foreign_config('acl');
19 $size = $in{'size_def'} ? $default_key_size : $in{'size'};
20 $cmd = &acl::get_ssleay();
21 open(CA, "| $cmd req -newkey rsa:$size -x509 -nodes -out $ctemp -keyout $ktemp -config $config_directory/acl/openssl.cnf -days 1825 >$outtemp 2>&1");
22 print CA $in{'countryName'},"\n";
23 print CA $in{'stateOrProvinceName'},"\n";
24 print CA "\n";
25 print CA $in{'organizationName'},"\n";
26 print CA $in{'organizationalUnitName'},"\n";
27 print CA $in{'commonName'},"\n";
28 print CA $in{'emailAddress'},"\n";
29 close(CA);
30 $out = `cat $outtemp`;
31 unlink($outtemp);
32 if (!-r $ctemp || !-r $ktemp) {
33         &error("<pre>$out</pre>");
34         }
35 system("cat $ctemp $ktemp >$miniserv{'ca'}");
36 unlink($ctemp);
37 unlink($ktemp);
38 unlink("$config_directory/acl/crl.pem");
39 chmod(0700, $miniserv{'ca'});
40 &unlock_file($miniserv{'ca'});
41
42 &put_miniserv_config(\%miniserv);
43 &unlock_file($ENV{'MINISERV_CONFIG'});
44 &ui_print_header(undef, $text{'ca_title'}, "");
45 print "<p>$text{'ca_setupok'}<p>\n";
46 &ui_print_footer("", $text{'index_return'});
47 &restart_miniserv(1);
48 &webmin_log("setupca", undef, undef, \%in);
49