#!/usr/local/bin/perl # view.cgi # Views certificates and keys in detail require './certmgr-lib.pl'; $access{'view'} || &error($text{'ecannot'}); &ReadParse(); if (!$in{'wildcard'}){$in{'wildcard'}=$config{'default_wildcard'}} $wildcard_pattern=$in{'wildcard'}; $wildcard_pattern=~s/\./\\./g; $wildcard_pattern=~s/\*/[^\/]*?/g; $wildcard_pattern=~s/\?/./g; if ($in{'dl'} ne "yes" && $in{'pkcs12'} ne "yes") { &header($text{'view_title'}, ""); print &ui_hr(); } if ($in{'delete'} eq "yes"){ if ($in{'keyfile'}) { $file=$in{'keyfile'} } elsif ($in{'certfile'}) { $file=$in{'certfile'} } elsif ($in{'csrfile'}) { $file=$in{'csrfile'} } elsif ($in{'keycertfile'}) { $file=$in{'keycertfile'} } if (!($file)&&((-f $file)||(-s $file))){ print "$file: $text{'view_e_nofile'}\n
\n"; } if (unlink($file)) { print "$file: $text{'view_deleted'}\n
\n"; } else { print "$file: $text{'view_e_not_deleted'}\n
\n"; } &footer("", $text{'index_return'}); exit; } if (($in{'filename'}) && ($in{'view'} eq $text{'view_view'})) { $in{'filename'}=$config{'ssl_dir'}."/".$in{'filename'}; if (!open(FILE,$in{'filename'})) { print "$text{'e_file'}\n
\n";
&footer("", $text{'index_return'});
exit;
}
while( \n";
&footer("", $text{'index_return'});
exit;
}
undef($buffer);
undef($key);
undef($cert);
}
if ($in{'keyfile'}) {
if ($in{'dl'} eq 'yes') {
# Just output in PEM format
&output_cert($in{'keyfile'});
} elsif ($in{'pkcs12'} eq 'yes') {
# Just output in PKCS8 format
&output_pkcs12($in{'keyfile'});
}
open(OPENSSL,"$config{'openssl_cmd'} rsa -in $in{'keyfile'} -text -noout|");
while(
\n$text{'e_notcert'}\n
";
&download_form("keyfile", $in{'keyfile'}, $text{'key'});
print &ui_hr();
&footer("", $text{'index_return'});
exit;
}
if ($in{'certfile'}||$in{'csrfile'}) {
if ($in{'csrfile'}){
$in{'certfile'}=$in{'csrfile'};
$text{'certificate'}=$text{'csr'};
}
if ($in{'dl'} eq 'yes') {
# Just output in PEM format
&output_cert($in{'certfile'});
} elsif ($in{'pkcs12'} eq 'yes') {
# Just output in PKCS8 format
&output_pkcs12($in{'certfile'});
}
if ($in{'csrfile'}) {
open(OPENSSL,"$config{'openssl_cmd'} req -in $in{'certfile'} -text -noout|");
} else {
open(OPENSSL,"$config{'openssl_cmd'} x509 -in $in{'certfile'} -text -fingerprint -noout|");
}
while(
";
&download_form("certfile", $in{'certfile'}, $text{'certificate'});
print &ui_hr();
&footer("", $text{'index_return'});
exit;
}
if ($in{'keycertfile'}) {
if ($in{'dl'} eq 'yes') {
# Just output in PEM format
&output_cert($in{'keycertfile'});
} elsif ($in{'pkcs12'} eq 'yes') {
# Just output in PKCS8 format
&output_pkcs12($in{'keycertfile'});
}
open(OPENSSL,"$config{'openssl_cmd'} x509 -in $in{'keycertfile'} -text -fingerprint -noout|");
while(
";
&download_form("keycertfile", $in{'keycertfile'}, "$text{'certificate'} / $text{'key'}");
print &ui_hr();
&footer("", $text{'index_return'});
exit;
}
if ($in{'crlfile'}) {
if ($in{'dl'} eq 'yes') {
# Just output in PEM format
&output_cert($in{'crlfile'});
}
open(OPENSSL,"$config{'openssl_cmd'} crl -in $in{'crlfile'} -text -noout|");
while(
";
&download_form("crlfile", $in{'crlfile'}, "CRL");
print &ui_hr();
&footer("", $text{'index_return'});
exit;
}
print &ui_form_start("view.cgi", "post");
print &ui_table_start($text{'view_select'}, undef, 2);
print &ui_table_row($text{'view_wildcard'}.": ".&ui_textbox("wildcard", $in{'wildcard'}), &ui_submit($text{'view_update'},"update"), undef, $valign_middle);
my @cert_directory;
push(@cert_directory, [ "", $text{'view_choose'}, "selected" ]);
foreach $f ( grep { /^(.*\/)*$wildcard_pattern$/ && -f "$config{'ssl_dir'}/$_" } &getfiles($config{'ssl_dir'})) {
push(@cert_directory, [ $f, $config{'ssl_dir'}."/".$f ]);
}
print &ui_table_row(&ui_select("filename", undef, \@cert_directory), &ui_submit($text{'view_view'},"view"), undef, $valign_middle);
print &ui_table_end();
print &ui_form_end();
print &ui_hr();
&footer("", $text{'index_return'});
sub output_cert
{
print "Content-type: text/plain\n\n";
open(OPENSSL, $_[0]);
while(