Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/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 <certificate-file>\n");
- }
- open INP, "<$filename" or die("Unable to load \"$filename\"\n");
- my $ifile = "";
- my $thisfile = "";
- while(<INP>) {
- $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";
Advertisement
Add Comment
Please, Sign In to add comment