Beefy Boxes and Bandwidth Generously Provided by pair Networks
more useful options
 
PerlMonks  

SSL certificate generator

by IlyaM (Parson)
on Aug 07, 2003 at 14:00 UTC ( #281897=CUFP: print w/ replies, xml ) Need Help??

I routinely create self subscribed SSL certs for testing purposes. So I wrote this script to automate this process:
#!/usr/bin/perl use strict; use warnings; use IPC::Run qw(start run); my $hostname = shift @ARGV; die "Usage: make_cert HOSTNAME" unless defined $hostname; { print "CREATE THE KEY AND REQUEST:\n\n"; my @cmd = qw(openssl req -new -keyout temp.pem -out temp.csr); my @io = ('Enter PEM pass phrase:', 'test', 'Verifying password - Enter PEM pass phrase:', 'test', 'Country Name.*:', 'UK', 'State.*:', 'Warwickshire', 'Locality Name.*:', 'Kenilworth', 'Organization Name.*:', 'Iponweb Ltd', 'Organizational Unit Name.*:', '', 'Common Name.*:', $hostname, 'Email Address.*', '', 'A challenge password.*:', '', 'An optional company name.*:', ''); expect(cmd => \@cmd, io => \@io); print "\n"; } { print "REMOVE THE PASSPHRASE FROM THE KEY:\n\n"; my @cmd = qw(openssl rsa -in temp.pem -out temp.key); my @io = ('Enter PEM pass phrase:', 'test'); expect(cmd => \@cmd, io => \@io); print "\n"; } { print "CREATE THE KEY AND REQUEST:\n\n"; my @cmd = qw(openssl x509 -in temp.csr -out temp.cert -req -signke +y temp.key -days 365); my @io = (); expect(cmd => \@cmd, io => \@io); print "\n"; } { print "PREPARING FILES:\n\n"; unlink 'temp.csr'; my $cert = $hostname . '.cert'; rename 'temp.cert', $cert; my $key = $hostname . '.key'; rename 'temp.key', $key; print "$cert and $key are ready for usage\n\n"; } sub expect { my %param = @_; my @io = @{$param{io}}; my $out; my $in; my $h = start($param{cmd}, '<pty<', \$in, '>pty>', \$out); my $last_length = 0; while(1) { my $expected = shift @io; last unless defined $expected; my $input = shift @io; last unless defined $input; until($out =~ /\G.*$expected/sgc) { $h->pump; local $| = 1; print substr $out, $last_length; $last_length = length $out; } $in .= $input . "\n"; } $h->finish; print substr $out, $last_length; }

--
Ilya Martynov, ilya@iponweb.net
CTO IPonWEB (UK) Ltd
Quality Perl Programming and Unix Support UK managed @ offshore prices - http://www.iponweb.net
Personal website - http://martynov.org

Comment on SSL certificate generator
Download Code

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: CUFP [id://281897]
Approved by sschneid
Front-paged by gmax
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others perusing the Monastery: (4)
As of 2015-07-05 03:07 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    The top three priorities of my open tasks are (in descending order of likelihood to be worked on) ...









    Results (60 votes), past polls