#
# SSLeay example configuration file.
# This is mostly being used for generation of certificate requests.
#

RANDFILE		= $ENV::HOME/.rnd

####################################################################
[ ca ]
default_ca	= CA_default		# The default ca section

####################################################################
[ CA_default ]

dir		= /var/lib/globus/simple_ca		# 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.
new_certs_dir	= $dir/newcerts		# default place for new certs.

certificate	= $dir/cacert.pem 	# The CA certificate
serial		= $dir/serial 		# The current serial number
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	= x509v3_extensions	# The extentions to add to the cert
default_days	= 365			# how long to certify for
default_crl_days= 365 # DEE 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		= optional
stateOrProvinceName	= optional
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
x509_extensions         = v3_ca
req_extensions          = v3_req

[ req_distinguished_name ]
# BEGIN CONFIG
<% 
oucount = 0
ocount = 0
@certificate.subject.to_a.each do |name, value, n| 
	case 
		when name.match(/^[Cc]$/) %>
countryName = Country Name (2 letter code)	
countryName_default = <%= value %> 	
countryName_min = 2
countryName_max = 2
<%		when name.match(/^[Oo]$/) %>
<%= ocount %>.organizationName = Level <%= ocount %> Organization
<%= ocount %>.organizationName_default = <%= value %>
<% ocount += 1 %>
<%		when name.match(/^[Oo][Uu]$/) %>
<%= oucount %>.organizationalUnitName = Level <%= oucount %> Organizational Unit
<%= oucount %>.organizationalUnitName_default = <%= value %>
<% oucount += 1 %>
<%		when name.match(/^[Cc][Nn]$/) 
			if @type == :user %>
<%= oucount %>.organizationalUnitName = Level <%= oucount %> Organizational Unit
<%= oucount %>.organizationalUnitName_default = local
<%			end %>
commonName = Name (E.g., John M. Smith)
commonName_max = 64
<%		else 
			raise "Unknown subject name component"
	end 
end%>
# END CONFIG

[ v3_ca ]
basicConstraints                = critical,CA:true
subjectKeyIdentifier            = hash
nsCertType                      = sslCA,emailCA,objCA

[ v3_req ]
nsCertType                      = sslCA,emailCA,objCA

[ x509v3_extensions ]
nsCertType			= objsign,email,server,client
