Fixed certificate serial detection
This commit is contained in:
parent
f237416bcb
commit
bf26fd7c03
|
@ -557,6 +557,8 @@ sub parsecert {
|
|||
my $tmp = {};
|
||||
my (@lines, $dn, $i, $c, $v, $k, $cmd, $crl, $time, $t, $ext, $ret, $pid);
|
||||
|
||||
my($rdfh, $wtfh);
|
||||
|
||||
$time = time();
|
||||
|
||||
$force && delete($self->{'CACHE'}->{$file});
|
||||
|
@ -632,6 +634,21 @@ sub parsecert {
|
|||
}
|
||||
}
|
||||
|
||||
# no serial yet? get it now the direct way
|
||||
if(!defined $tmp->{'SERIAL'}){
|
||||
$cmd = "$self->{'bin'} x509 -noout -serial -in $file";
|
||||
$ext = "$cmd\n\n";
|
||||
$pid = open3($wtfh, $rdfh, $rdfh, $cmd);
|
||||
while(<$rdfh>){
|
||||
$ext .= $_;
|
||||
($k, $v) = split(/=/);
|
||||
$tmp->{'SERIAL'} = $v if($k =~ /serial/i);
|
||||
chomp($tmp->{'SERIAL'});
|
||||
}
|
||||
waitpid($pid, 0);
|
||||
$ret = $? >> 8;
|
||||
}
|
||||
|
||||
# parse subject DN
|
||||
$dn = HELPERS::parse_dn($tmp->{'DN'});
|
||||
foreach(keys(%$dn)) {
|
||||
|
@ -646,7 +663,6 @@ sub parsecert {
|
|||
|
||||
# get fingerprint
|
||||
$cmd = "$self->{'bin'} x509 -noout -fingerprint -md5 -in $file";
|
||||
my($rdfh, $wtfh);
|
||||
$ext = "$cmd\n\n";
|
||||
$pid = open3($wtfh, $rdfh, $rdfh, $cmd);
|
||||
while(<$rdfh>){
|
||||
|
@ -1059,6 +1075,9 @@ sub _set_expired {
|
|||
|
||||
close IN;
|
||||
|
||||
# Format of OpenSSl index db
|
||||
# E|R|V<tab>Expiry<tab>[RevocationDate]<tab>Serial<tab>unknown<tab>SubjectDN
|
||||
|
||||
open(OUT, ">$index") || do {
|
||||
my $t = sprintf(_("Can't write index %s: %s"), $index, $!);
|
||||
GUI::HELPERS::print_warning($t);
|
||||
|
|
Loading…
Reference in New Issue