#!/usr/bin/perl # # cert-split-batch.pl - splits big ca bundle into lots of little ca files # my $filename = shift; unless($filename) { die("Usage:\n cert-split-batch.pl \n"); } open INP, "<$filename" or die("Unable to load \"$filename\"\n"); my $ifile = ""; my $thisfile = ""; while() { $ifile .= $_; $thisfile .= $_; if($_ =~ /^\-+END(\s\w+)?\sCERTIFICATE\-+$/) { print "Found a complete certificate:\n"; print `echo "$thisfile" | openssl x509 -noout -issuer -subject`; $subjectDump = `echo "$thisfile" | openssl x509 -noout -subject`; if ($subjectDump =~ m/.*\/O=.*/) { $ORegex = $subjectDump; $ORegex =~ s/.*\/O=(.*?)($|\/.*)/$1/; #print "O:".$ORegex."\n"; $genFileName = $ORegex; } if ($subjectDump =~ m/.*\/OU=.*/) { $OURegex = $subjectDump; $OURegex =~ s/.*\/OU=(.*?)($|\/.*)/$1/; #print "OU:".$OURegex."\n"; $genFileName .= "-".$OURegex; } if ($subjectDump =~ m/.*\/CN=.*/) { $CNRegex = $subjectDump; $CNRegex =~ s/.*\/CN=(.*?)($|\/.*)/$1/; #print "CN:".$CNRegex."\n"; $genFileName .= "-".$CNRegex; } $genFileName =~ s/[\(\).,\[\]<>\{\}\s\'\"\:\;\&\n]//g; #print $genFileName."\n"; $genFileName =~ s/[^\d\w_-]/_/g; #print $genFileName."\n"; $genFileName =~ s/(.*?)_$/$1/g; #print $genFileName."\n"; $genFileName .= '.crt'; #print $genFileName."\n"; print "Saving certificate files as ".$genFileName."\n"; my $fname = $genFileName; open CERT, ">$fname"; print CERT $thisfile; close CERT; $thisfile = ""; print "Certificate saved\n\n"; } } close INP; print "Completed\n";