For the last option, I have a hack
diff --git a/tools/c_rehash.in b/tools/c_rehash.in index 4497cbd..d76e693 100644 --- a/tools/c_rehash.in +++ b/tools/c_rehash.in @@ -59,12 +59,15 @@ sub hash_dir { } } closedir DIR; - FILE: foreach $fname (grep {/\.pem$/} @flist) { + FILE: foreach $fname (grep {/\.pem$|\.crt$/} @flist) { # Check to see if certificates and/or CRLs present. my ($cert, $crl) = check_file($fname); if(!$cert && !$crl) { - print STDERR "WARNING: $fname does not contain a certificate or CRL: skipping\n"; - next; + ($cert, $crl) = check_file("$openssl x509 -in \"$fname\" -inform der -outform pem | "); + if(!$cert && !$crl) { + print STDERR "WARNING: $fname does not contain a certificate or CRL: skipping\n"; + next; + } } link_hash_cert($fname) if($cert); link_hash_crl($fname) if($crl); @@ -102,6 +105,9 @@ sub link_hash_cert { my $fname = $_[0]; $fname =~ s/'/'\\''/g; my ($hash, $fprint) = `"$openssl" x509 -hash -fingerprint -noout -in '$fname'`; + if(!$hash || !fprint) { + ($hash, $fprint) = `"$openssl" x509 -hash -fingerprint -noout -in '$fname' -inform der`; + } chomp $hash; chomp $fprint; $fprint =~ s/^.*=//;