new now default tip
authorHeiko Schlittermann <hs@schlittermann.de>
Wed, 15 Dec 2010 23:43:44 +0100
changeset 4 04c4e7da49ff
parent 3 6657142678fa
new now
.hgignore
bin/.micro-ca.swp
bin/.perltidyrc
bin/ca
bin/micro-ca
bin/shell
lib/templates/ca
lib/templates/openssl.cnf
lib/templates/req
--- a/.hgignore	Wed Dec 15 23:43:30 2010 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,3 +0,0 @@
-style: glob
-var/
-CA/
Binary file bin/.micro-ca.swp has changed
--- a/bin/.perltidyrc	Wed Dec 15 23:43:30 2010 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,2 +0,0 @@
---paren-tightness=2
---square-bracket-tightness=2
--- a/bin/ca	Wed Dec 15 23:43:30 2010 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,226 +0,0 @@
-#! /usr/bin/perl
-use strict;
-use warnings;
-use Template;
-use IO::File;
-use File::Path;
-use File::Temp qw(tempdir);
-use File::Basename;
-use Getopt::Long qw(GetOptionsFromArray);
-use Pod::Usage;
-use feature qw(switch);
-
-my $CA_CRT = "CA/ca-crt.pem";
-my $CA_KEY = "CA/private/ca-key.pem";
-my $CA_DIR = "./var";
-
-my %TEMPLATE = (
-    ca  => "lib/templates/ca",
-    req => "lib/templates/req",
-);
-
-my $TMP = tempdir("/tmp/$ENV{USER}.ca.XXXXXX", CLEANUP => 1);
-
-my $opt_days    = undef;    # see the templates/ca for a default
-my $opt_type    = undef;    # see the templates/ca for a default
-my $opt_policy  = "de";     # see the templates/ca for a default
-my $opt_outfile = undef;
-my $opt_force   = undef;
-
-sub init_ca();
-sub ask_pass($);
-
-MAIN: {
-    my $csrfile;
-
-    GetOptions(
-        "d|days=i"    => \$opt_days,
-        "t|type=s"    => \$opt_type,
-        "p|policy=s"  => \$opt_policy,
-        "o|outfile=s" => \$opt_outfile,
-        "f|force"     => \$opt_force,
-        "i|init"      => sub { eval { init_ca() }; if ($@) { warn $@; exit 1 }; exit 0 },
-        "h|help"      => sub { pod2usage(-verbose => 1, -exit => 0) },
-        "m|man"       => sub { pod2usage(-verbose => 2, -exit => 0) },
-    ) or pod2usage;
-
-    pod2usage if @ARGV > 1;
-    $csrfile = $ARGV[0];    # don't shift, we'll need it later!
-
-    my $cnf = new IO::File ">$TMP/cnf"  or die "Can't open >$TMP/cnf: $!\n";
-    my $csr = new IO::File "+>$TMP/csr" or die "Can't open +>$TMP/csr: $!\n";
-    my $crt = new IO::File "+>$TMP/crt" or die "Can't open +>$TMP/crt: $!\n";
-    my $tt2 = new Template              or die $Template::ERROR;
-
-    # get a private copy of the request
-    print { IO::File->new("|openssl req -out $TMP/csr") } <>;
-    open(STDIN, "</dev/tty") if not defined $csrfile;
-
-    die "CSR is empty" if not -s $csr;
-
-    $tt2->process(
-        $TEMPLATE{ca},
-        {
-            type   => $opt_type,
-            days   => $opt_days,
-            policy => "policy_$opt_policy",
-            cacrt  => $CA_CRT,
-            cakey  => $CA_KEY,
-            cadir  => $CA_DIR,
-        } => "$TMP/cnf"
-    ) or die $tt2->error, "\n";
-
-    system( "openssl ca -config $TMP/cnf -in $TMP/csr -out $TMP/crt"
-          . " -utf8 \${CA_PASS:+-passin env:CA_PASS}");
-
-    die "ERR: Cert is zero size\n" if not -s $crt;
-
-    # get the name of the output crt file
-    my $outfile = $opt_outfile;
-    if (not defined $outfile and defined($_ = $csrfile)) {
-        if    (/(.*[\W_])(?:req|csr).pem$/) { $outfile = "$1crt.pem" }
-        elsif (/(.*[\W_])req$/)             { $outfile = "$1crt" }
-        else                                { $outfile .= ".crt.pem" }
-    }
-
-    # to be sure not to have an invalid/dangerous file name
-    if (fork() == 0) {
-	if (defined $outfile) {
-	    open(STDOUT, ">$outfile")
-              or die "Can't open >$outfile: $!\n";
-	    }
-        exec "openssl x509 -in $TMP/crt";
-        die "Can't exec openssl x509: $!\n";
-    }
-    else { wait }
-
-    # and now, since it's finally done, we'll copy the request
-    # away (for later use (thing about re-issuing a certificate))
-    my $subject = `openssl x509 -in $TMP/crt -noout -subject`;
-    if (my ($cn) = $subject =~ /CN=(\S+?)[,\/\s\$]/) {
-        if (fork() == 0) {
-            open(STDOUT, ">$CA_DIR/requests/$cn-csr.pem")
-              or die "Can't open >$CA_DIR/requests/$cn-csr.pem: $!\n";
-            exec "openssl req -in $TMP/csr";
-            die "Can't exec openssl req: $!\n";
-        }
-        else { wait }
-    }
-    else {
-        die "Can't determine the CN from $subject, not saving the request\n";
-    }
-
-    exit;
-}
-
-sub ask_pass($) {
-    my $prompt = shift;
-    my @keys = ("x", "y");
-
-    while (1) {
-        print $prompt;
-        my $stty = `stty -g`;
-        system("stty -echo");
-        chomp($keys[0] = IO::File->new("/dev/tty")->getline());
-        print "\n";
-        system("stty $stty");
-        print "please again for verification: ";
-        system("stty -echo");
-        chomp($keys[1] = IO::File->new("/dev/tty")->getline());
-        print "\n";
-        system("stty $stty");
-        return $keys[0] if $keys[0] eq $keys[1];
-        print "keys mismatch, again\n";
-    }
-}
-
-sub init_ca() {
-
-    # initialize the CA directory structure. This should
-    # correspond to the values found in templates/ca
-    die "$CA_DIR already exists" if -d $CA_DIR and not $opt_force;
-    mkpath(map { "$CA_DIR/$_" } qw(newcerts requests));
-    mkpath(map { dirname $_ } $CA_CRT, $CA_KEY);
-    (new IO::File ">$CA_DIR/index");
-    (new IO::File ">$CA_DIR/serial")->print("01\n");
-
-    # now
-    my $tt2 = new Template or die $Template::ERROR;
-    $tt2->process(
-        $TEMPLATE{req},
-        {
-
-            # not used yet
-        } => "$TMP/cnf"
-    ) or die $tt2->error;
-
-    $ENV{CA_PASS} = ask_pass("passphrase for CA key: ");
-    system(
-"openssl req -config $TMP/cnf -x509 -days 3650 -new -passout env:CA_PASS -keyout $TMP/ca-key.pem -out $TMP/ca-crt.pem"
-    ) and exit;
-
-    system("openssl x509 -in $TMP/ca-crt.pem -out $CA_CRT") and exit;
-    $_ = umask(077);
-    system(
-"openssl rsa -in $TMP/ca-key.pem -des3 -passin env:CA_PASS -passout env:CA_PASS -out $CA_KEY"
-    ) and exit;
-    umask($_);
-
-    return 0;
-
-}
-
-__END__
-
-=head1 NAME
-
-    ca - the ultimative CA tool
-
-=head1 SYNOPSIS
-
-    ca [--force] --init
-    ca --type=TYPE --days=DAYS [request.pem]
-
-    (not yet: request c=COUNTRY ST=STATE l=LOCATION o=ORGANIZATION OU=ORG-UNIT cn=COMMON-NAME)
-
-=head1 DESCRIPTION
-
-This B<ca> tool signs the request file. If no file is given, it
-expects the request on STDIN
-
-=head1 OPTIONS
-
-=over 4
-
-=item B<-d>|B<--days> I<days>
-
-The number of days the certificate should be valid. (default: 365)
-
-=item B<-h>|B<--help>
-
-Print the reference help and exit. (default: off)
-
-=item B<-i>|B<--init>
-
-Initialize the CA (keys, directories). This may be enforce with
-B<--force>. (default: off)
-
-=item B<-m>|B<--man>
-
-Open the reference manual and exit. (default: off)
-
-=item B<-o>|B<--out> I<outfile>
-
-The name of the output file. If not set (the default), the output goes
-to I<stdout> if the CSR came from stdin and it goes to a file named
-similar to the CSR, if the request came from a file.
-
-=item B<-t>|B<--type> I<type>
-
-The (NSCertType) type of the certificate. Should be client or server.
-(default: none)
-
-=back
-
-=cut
-## Please see file perltidy.ERR
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/bin/micro-ca	Wed Dec 15 23:43:44 2010 +0100
@@ -0,0 +1,108 @@
+#! /usr/bin/perl
+
+use 5.010001;
+use strict;
+use warnings;
+use feature ":5.10";
+use autodie;
+use Digest::SHA1 qw(sha1_hex);
+use File::Basename;
+use File::Path qw(make_path);
+
+use Pod::Usage;
+use File::Copy;
+use Getopt::Long;
+
+sub slurp($);
+
+my $ca_dir = "CA";
+my $umask = 077;
+
+MAIN: {
+
+    umask $umask;
+
+    GetOptions() or pod2usage;
+
+    given (shift) {
+	when ("init") {
+	    exit init(@ARGV);
+	}
+    }
+}
+
+sub init {
+
+    my $cnf = "conf/openssl.cnf";
+    local $_;
+
+    make_path dirname $cnf;
+    make_path "$ca_dir/newcerts";
+    make_path "var/bundles";
+
+    die "$cnf already exists" if -f $cnf
+	or -f "$ca_dir/serial"
+	or -f "$ca_dir/index.txt";
+
+    # copy the config and remember the hash of 
+    # the orig config
+    copy "/usr/lib/ssl/openssl.cnf" => $cnf;
+    my $fh;
+    $_ = slurp $cnf;
+    open($fh, ">", "$cnf-orig.sha1");
+    say {$fh} sha1_hex($_);
+    say "now you should edit $cnf…";
+
+    # edit the config
+    open($fh, "+<", $cnf);
+    $_ = join "", <$fh>;
+    s/\.\/demoCA/.\/$ca_dir/;
+    seek($fh, 0, 0);
+    truncate($fh, 0);
+    print $fh $_;
+
+
+    open($fh, ">", "$ca_dir/serial");
+    print {$fh} "00\n";
+
+    open($fh, ">", "$ca_dir/index.txt");
+    close($fh);
+
+    return 0;
+}
+
+sub slurp($) {
+    my $fn = shift;
+    open(my $fh => $fn) or die "$fn: $!";
+    return <$fh> if wantarray;
+    return join "", <$fh>;
+}
+
+
+__END__
+
+=head1 NAME
+
+ micro-ca -- you name it
+
+=head1 SYNOPSIS
+
+ micro-ca init
+
+=head1 DESCRIPTION
+
+...
+
+=head1 SUBCOMMANDS
+
+=over
+
+=item B<--init>
+
+Initialize the data structure.
+
+=back
+
+=cut
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/bin/shell	Wed Dec 15 23:43:44 2010 +0100
@@ -0,0 +1,8 @@
+#! /bin/bash
+export OPENSSL_CONF=$(dirname $(cd $(dirname $0) && pwd))/conf/openssl.cnf
+echo using $OPENSSL_CONF
+export PS1="SSL $PS1"
+
+diff /usr/lib/ssl/openssl.cnf $OPENSSL_CONF.orig || exit
+
+exec bash
--- a/lib/templates/ca	Wed Dec 15 23:43:30 2010 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,128 +0,0 @@
-#
-# OpenSSL example configuration file.
-# This is mostly being used for generation of certificate requests.
-#
-
-# This definition stops the following lines choking if HOME isn't
-# defined.
-#HOME			= .
-#RANDFILE		= $ENV::HOME/.rnd
-
-# Extra OBJECT IDENTIFIER info:
-#oid_file		= $ENV::HOME/.oid
-#oid_section		= new_oids
-
-
-####################################################################
-[ ca ]
-default_ca	= CA_default		# The default ca section
-
-####################################################################
-[ CA_default ]
-
-[% IF not cadir %]
-[% THROW param "missing ca dir" %]
-[% END %]
-
-dir		= [% cadir %]
-certs		= $dir/certs		# Where the issued certs are kept
-crl_dir		= $dir/crl		# Where the issued crl are kept
-database	= $dir/index	# database index file.
-#unique_subject	= no			# Set to 'no' to allow creation of
-					# several ctificates with same subject.
-new_certs_dir	= $dir/newcerts		# default place for new certs.
-
-[% IF not cacrt %]
-[% THROW param "missing ca crt" %]
-[% END %]
-
-certificate	= [% cacrt %]           # The CA certificate
-serial		= $dir/serial 		# The current serial number
-crlnumber	= $dir/crlnumber	# the current crl number
-					# must be commented out to leave a V1 CRL
-crl		= $dir/crl.pem 		# The current CRL
-
-[% IF not cakey %]
-[% THROW param "missing ca key" %]
-[% END %]
-
-private_key	= [% cakey %]           # The private key
-
-RANDFILE	= $dir/.rand		# private random number file
-
-x509_extensions	= usr_cert		# The extentions to add to the cert
-
-# Comment out the following two lines for the "traditional"
-# (and highly broken) format.
-name_opt 	= ca_default		# Subject Name options
-cert_opt 	= ca_default		# Certificate field options
-
-# Extension copying option: use with caution.
-# copy_extensions = copy
-
-# Extensions to add to a CRL. Note: Netscape communicator chokes on V2 CRLs
-# so this is commented out by default to leave a V1 CRL.
-# crlnumber must also be commented out to leave a V1 CRL.
-# crl_extensions	= crl_ext
-
-[% DEFAULT days = 365 %]
-default_days	= [% days %]		# how long to certify for
-default_crl_days= 30			# how long before next CRL
-default_md	= sha1			# which md to use.
-preserve	= no			# keep passed DN ordering
-
-# A few difference way of specifying how similar the request should look
-# For type CA, the listed attributes must be the same, and the optional
-# and supplied fields are just that :-)
-[% DEFAULT policy = de %]
-policy		= [% policy %]
-
-# For the CA policy
-[ policy_de ]
-countryName		= match
-stateOrProvinceName	= supplied
-organizationName	= supplied
-organizationalUnitName	= optional
-commonName		= supplied
-emailAddress		= optional
-
-# For the 'anything' policy
-# At this point in time, you must list all acceptable 'object'
-# types.
-[ policy_anything ]
-countryName		= optional
-stateOrProvinceName	= optional
-localityName		= optional
-organizationName	= optional
-organizationalUnitName	= optional
-commonName		= supplied
-emailAddress		= optional
-
-####################################################################
-
-[ usr_cert ]
-
-# These extensions are added when 'ca' signs a request.
-
-# This goes against PKIX guidelines but some CAs do it and some software
-# requires this to avoid interpreting an end user certificate as a CA.
-
-basicConstraints=CA:FALSE
-
-# Here are some examples of the usage of nsCertType. If it is omitted
-# the certificate can be used for anything *except* object signing.
-
-[% IF type %]
-# This is OK for an SSL server.
-nsCertType			= [% type %]
-[% END %]
-
-# This will be displayed in Netscape's comment listbox.
-nsComment			= "OpenSSL Generated Certificate"
-
-# PKIX recommendations harmless if included in all certificates.
-subjectKeyIdentifier=hash
-authorityKeyIdentifier=keyid,issuer
-
-nsCaRevocationUrl		= https://ssl.schlittermann.de/ca/ca-crl.pem
-nsRevocationUrl			= https://ssl.schlittermann.de/ca/crt-crl.pem
--- a/lib/templates/openssl.cnf	Wed Dec 15 23:43:30 2010 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,313 +0,0 @@
-#
-# OpenSSL example configuration file.
-# This is mostly being used for generation of certificate requests.
-#
-
-# This definition stops the following lines choking if HOME isn't
-# defined.
-HOME			= .
-RANDFILE		= $ENV::HOME/.rnd
-
-# Extra OBJECT IDENTIFIER info:
-#oid_file		= $ENV::HOME/.oid
-oid_section		= new_oids
-
-# To use this configuration file with the "-extfile" option of the
-# "openssl x509" utility, name here the section containing the
-# X.509v3 extensions to use:
-# extensions		= 
-# (Alternatively, use a configuration file that has only
-# X.509v3 extensions in its main [= default] section.)
-
-[ new_oids ]
-
-# We can add new OIDs in here for use by 'ca' and 'req'.
-# Add a simple OID like this:
-# testoid1=1.2.3.4
-# Or use config file substitution like this:
-# testoid2=${testoid1}.5.6
-
-####################################################################
-[ ca ]
-default_ca	= CA_default		# The default ca section
-
-####################################################################
-[ CA_default ]
-
-dir		= ./demoCA		# Where everything is kept
-certs		= $dir/certs		# Where the issued certs are kept
-crl_dir		= $dir/crl		# Where the issued crl are kept
-database	= $dir/index.txt	# database index file.
-#unique_subject	= no			# Set to 'no' to allow creation of
-					# several ctificates with same subject.
-new_certs_dir	= $dir/newcerts		# default place for new certs.
-
-certificate	= $dir/cacert.pem 	# The CA certificate
-serial		= $dir/serial 		# The current serial number
-crlnumber	= $dir/crlnumber	# the current crl number
-					# must be commented out to leave a V1 CRL
-crl		= $dir/crl.pem 		# The current CRL
-private_key	= $dir/private/cakey.pem# The private key
-RANDFILE	= $dir/private/.rand	# private random number file
-
-x509_extensions	= usr_cert		# The extentions to add to the cert
-
-# Comment out the following two lines for the "traditional"
-# (and highly broken) format.
-name_opt 	= ca_default		# Subject Name options
-cert_opt 	= ca_default		# Certificate field options
-
-# Extension copying option: use with caution.
-# copy_extensions = copy
-
-# Extensions to add to a CRL. Note: Netscape communicator chokes on V2 CRLs
-# so this is commented out by default to leave a V1 CRL.
-# crlnumber must also be commented out to leave a V1 CRL.
-# crl_extensions	= crl_ext
-
-default_days	= 365			# how long to certify for
-default_crl_days= 30			# how long before next CRL
-default_md	= sha1			# which md to use.
-preserve	= no			# keep passed DN ordering
-
-# A few difference way of specifying how similar the request should look
-# For type CA, the listed attributes must be the same, and the optional
-# and supplied fields are just that :-)
-policy		= policy_match
-
-# For the CA policy
-[ policy_match ]
-countryName		= match
-stateOrProvinceName	= match
-organizationName	= match
-organizationalUnitName	= optional
-commonName		= supplied
-emailAddress		= optional
-
-# For the 'anything' policy
-# At this point in time, you must list all acceptable 'object'
-# types.
-[ policy_anything ]
-countryName		= optional
-stateOrProvinceName	= optional
-localityName		= optional
-organizationName	= optional
-organizationalUnitName	= optional
-commonName		= supplied
-emailAddress		= optional
-
-####################################################################
-[ req ]
-default_bits		= 1024
-default_keyfile 	= privkey.pem
-distinguished_name	= req_distinguished_name
-attributes		= req_attributes
-x509_extensions	= v3_ca	# The extentions to add to the self signed cert
-
-# Passwords for private keys if not present they will be prompted for
-# input_password = secret
-# output_password = secret
-
-# This sets a mask for permitted string types. There are several options. 
-# default: PrintableString, T61String, BMPString.
-# pkix	 : PrintableString, BMPString.
-# utf8only: only UTF8Strings.
-# nombstr : PrintableString, T61String (no BMPStrings or UTF8Strings).
-# MASK:XXXX a literal mask value.
-# WARNING: current versions of Netscape crash on BMPStrings or UTF8Strings
-# so use this option with caution!
-string_mask = nombstr
-
-# req_extensions = v3_req # The extensions to add to a certificate request
-
-[ req_distinguished_name ]
-countryName			= Country Name (2 letter code)
-countryName_default		= AU
-countryName_min			= 2
-countryName_max			= 2
-
-stateOrProvinceName		= State or Province Name (full name)
-stateOrProvinceName_default	= Some-State
-
-localityName			= Locality Name (eg, city)
-
-0.organizationName		= Organization Name (eg, company)
-0.organizationName_default	= Internet Widgits Pty Ltd
-
-# we can do this but it is not needed normally :-)
-#1.organizationName		= Second Organization Name (eg, company)
-#1.organizationName_default	= World Wide Web Pty Ltd
-
-organizationalUnitName		= Organizational Unit Name (eg, section)
-#organizationalUnitName_default	=
-
-commonName			= Common Name (eg, YOUR name)
-commonName_max			= 64
-
-emailAddress			= Email Address
-emailAddress_max		= 64
-
-# SET-ex3			= SET extension number 3
-
-[ req_attributes ]
-challengePassword		= A challenge password
-challengePassword_min		= 4
-challengePassword_max		= 20
-
-unstructuredName		= An optional company name
-
-[ usr_cert ]
-
-# These extensions are added when 'ca' signs a request.
-
-# This goes against PKIX guidelines but some CAs do it and some software
-# requires this to avoid interpreting an end user certificate as a CA.
-
-basicConstraints=CA:FALSE
-
-# Here are some examples of the usage of nsCertType. If it is omitted
-# the certificate can be used for anything *except* object signing.
-
-# This is OK for an SSL server.
-# nsCertType			= server
-
-# For an object signing certificate this would be used.
-# nsCertType = objsign
-
-# For normal client use this is typical
-# nsCertType = client, email
-
-# and for everything including object signing:
-# nsCertType = client, email, objsign
-
-# This is typical in keyUsage for a client certificate.
-# keyUsage = nonRepudiation, digitalSignature, keyEncipherment
-
-# This will be displayed in Netscape's comment listbox.
-nsComment			= "OpenSSL Generated Certificate"
-
-# PKIX recommendations harmless if included in all certificates.
-subjectKeyIdentifier=hash
-authorityKeyIdentifier=keyid,issuer
-
-# This stuff is for subjectAltName and issuerAltname.
-# Import the email address.
-# subjectAltName=email:copy
-# An alternative to produce certificates that aren't
-# deprecated according to PKIX.
-# subjectAltName=email:move
-
-# Copy subject details
-# issuerAltName=issuer:copy
-
-#nsCaRevocationUrl		= http://www.domain.dom/ca-crl.pem
-#nsBaseUrl
-#nsRevocationUrl
-#nsRenewalUrl
-#nsCaPolicyUrl
-#nsSslServerName
-
-[ v3_req ]
-
-# Extensions to add to a certificate request
-
-basicConstraints = CA:FALSE
-keyUsage = nonRepudiation, digitalSignature, keyEncipherment
-
-[ v3_ca ]
-
-
-# Extensions for a typical CA
-
-
-# PKIX recommendation.
-
-subjectKeyIdentifier=hash
-
-authorityKeyIdentifier=keyid:always,issuer:always
-
-# This is what PKIX recommends but some broken software chokes on critical
-# extensions.
-#basicConstraints = critical,CA:true
-# So we do this instead.
-basicConstraints = CA:true
-
-# Key usage: this is typical for a CA certificate. However since it will
-# prevent it being used as an test self-signed certificate it is best
-# left out by default.
-# keyUsage = cRLSign, keyCertSign
-
-# Some might want this also
-# nsCertType = sslCA, emailCA
-
-# Include email address in subject alt name: another PKIX recommendation
-# subjectAltName=email:copy
-# Copy issuer details
-# issuerAltName=issuer:copy
-
-# DER hex encoding of an extension: beware experts only!
-# obj=DER:02:03
-# Where 'obj' is a standard or added object
-# You can even override a supported extension:
-# basicConstraints= critical, DER:30:03:01:01:FF
-
-[ crl_ext ]
-
-# CRL extensions.
-# Only issuerAltName and authorityKeyIdentifier make any sense in a CRL.
-
-# issuerAltName=issuer:copy
-authorityKeyIdentifier=keyid:always,issuer:always
-
-[ proxy_cert_ext ]
-# These extensions should be added when creating a proxy certificate
-
-# This goes against PKIX guidelines but some CAs do it and some software
-# requires this to avoid interpreting an end user certificate as a CA.
-
-basicConstraints=CA:FALSE
-
-# Here are some examples of the usage of nsCertType. If it is omitted
-# the certificate can be used for anything *except* object signing.
-
-# This is OK for an SSL server.
-# nsCertType			= server
-
-# For an object signing certificate this would be used.
-# nsCertType = objsign
-
-# For normal client use this is typical
-# nsCertType = client, email
-
-# and for everything including object signing:
-# nsCertType = client, email, objsign
-
-# This is typical in keyUsage for a client certificate.
-# keyUsage = nonRepudiation, digitalSignature, keyEncipherment
-
-# This will be displayed in Netscape's comment listbox.
-nsComment			= "OpenSSL Generated Certificate"
-
-# PKIX recommendations harmless if included in all certificates.
-subjectKeyIdentifier=hash
-authorityKeyIdentifier=keyid,issuer:always
-
-# This stuff is for subjectAltName and issuerAltname.
-# Import the email address.
-# subjectAltName=email:copy
-# An alternative to produce certificates that aren't
-# deprecated according to PKIX.
-# subjectAltName=email:move
-
-# Copy subject details
-# issuerAltName=issuer:copy
-
-#nsCaRevocationUrl		= http://www.domain.dom/ca-crl.pem
-#nsBaseUrl
-#nsRevocationUrl
-#nsRenewalUrl
-#nsCaPolicyUrl
-#nsSslServerName
-
-# This really needs to be in place for it to be a proxy certificate.
-proxyCertInfo=critical,language:id-ppl-anyLanguage,pathlen:3,policy:foo
--- a/lib/templates/req	Wed Dec 15 23:43:30 2010 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,102 +0,0 @@
-# OpenSSL example configuration file.
-# This is mostly being used for generation of certificate requests.
-#
-
-# This definition stops the following lines choking if HOME isn't
-# defined.
-HOME			= .
-RANDFILE		= $ENV::HOME/.rnd
-
-# Extra OBJECT IDENTIFIER info:
-#oid_file		= $ENV::HOME/.oid
-#oid_section		= new_oids
-
-[ req ]
-default_bits		= 1024
-default_keyfile 	= privkey.pem
-distinguished_name	= req_distinguished_name
-#attributes		= req_attributes
-x509_extensions	= v3_ca	# The extentions to add to the self signed cert
-
-# Passwords for private keys if not present they will be prompted for
-# input_password = secret
-# output_password = secret
-
-# This sets a mask for permitted string types. There are several options. 
-# default: PrintableString, T61String, BMPString.
-# pkix	 : PrintableString, BMPString.
-# utf8only: only UTF8Strings.
-# nombstr : PrintableString, T61String (no BMPStrings or UTF8Strings).
-# MASK:XXXX a literal mask value.
-# WARNING: current versions of Netscape crash on BMPStrings or UTF8Strings
-# so use this option with caution!
-string_mask = nombstr
-
-# req_extensions = v3_req # The extensions to add to a certificate request
-
-[ req_distinguished_name ]
-countryName			= Country Name (2 letter code)
-countryName_default		= DE
-countryName_min			= 2
-countryName_max			= 2
-
-stateOrProvinceName		= State or Province Name (full name)
-stateOrProvinceName_default	= Saxony
-
-localityName			= Locality Name (eg, city)
-0.organizationName		= Organization Name (eg, company)
-
-organizationalUnitName		= Organizational Unit Name (eg, section)
-
-commonName			= Common Name (eg, YOUR name)
-commonName_max			= 64
-
-emailAddress			= Email Address
-emailAddress_max		= 64
-
-# SET-ex3			= SET extension number 3
-
-[ req_attributes ]
-challengePassword		= A challenge password
-challengePassword_min		= 4
-challengePassword_max		= 20
-
-unstructuredName		= An optional company name
-
-[ v3_ca ]
-
-
-# Extensions for a typical CA
-
-
-# PKIX recommendation.
-
-subjectKeyIdentifier=hash
-
-authorityKeyIdentifier=keyid:always,issuer:always
-
-# This is what PKIX recommends but some broken software chokes on critical
-# extensions.
-#basicConstraints = critical,CA:true
-# So we do this instead.
-basicConstraints = CA:true
-
-# Key usage: this is typical for a CA certificate. However since it will
-# prevent it being used as an test self-signed certificate it is best
-# left out by default.
-# keyUsage = cRLSign, keyCertSign
-
-# Some might want this also
-# nsCertType = sslCA, emailCA
-
-# Include email address in subject alt name: another PKIX recommendation
-# subjectAltName=email:copy
-# Copy issuer details
-# issuerAltName=issuer:copy
-
-# DER hex encoding of an extension: beware experts only!
-# obj=DER:02:03
-# Where 'obj' is a standard or added object
-# You can even override a supported extension:
-# basicConstraints= critical, DER:30:03:01:01:FF
-