3
$config = "/var/openssl/openssl.cnf";
4
$capath = "/usr/bin/openssl ca";
5
$certpass = "mypassword";
6
$tempca = "/tmp/ssl/cli".rand 10000;
7
$tempout = "/tmp/ssl/certtmp".rand 10000;
8
$caout = "/tmp/ssl/certout.txt";
9
$CAcert = "/var/openssl/localCA/cacert.pem";
14
$spkac = $FIELDS{'SPKAC'};
17
open(TEMPCE,">$tempca") || die &Error;
18
print TEMPCE "C = $FIELDS{'country'}\n";
19
print TEMPCE "ST = $FIELDS{'state'}\n";
20
print TEMPCE "O = $FIELDS{'organization'}\n";
21
print TEMPCE "Email = $FIELDS{'email'}\n";
22
print TEMPCE "CN = $FIELDS{'who'}\n";
23
print TEMPCE "SPKAC = $spkac\n";
26
system("$capath -batch -config $config -spkac $tempca -out $tempout -key $certpass -cert $CAcert>> $caout 2>&1");
27
open(CERT,"$tempout") || die &Error;
28
@certificate = <CERT>;
31
#system("rm -f $tempca");
32
#system("rm -f $tempout");
34
print "Content-type: application/x-x509-user-cert\n\n";
37
##############################################################
44
if ($ENV{'REQUEST_METHOD'} eq 'GET') {
45
@pairs = split(/&/, $ENV{'QUERY_STRING'});
47
elsif ($ENV{'REQUEST_METHOD'} eq 'POST') {
48
read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});
49
@pairs = split(/&/, $buffer);
51
foreach $pair (@pairs) {
52
($name, $value) = split(/=/, $pair);
54
$name =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
56
$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
57
$value =~ s/<!--(.|\n)*-->//g;
58
$FIELDS{$name} = $value;
63
print "Content-type: text/html\n\n";
64
print "<P><P><center><H1>Cant open file</H1></center>\n";